{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=\"red\">注</font>: 使用 tensorboard 可视化需要安装 tensorflow (TensorBoard依赖于tensorflow库，可以任意安装tensorflow的gpu/cpu版本)\n",
    "\n",
    "```shell\n",
    "pip install tensorflow-cpu\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T02:58:47.902275Z",
     "start_time": "2024-07-24T02:58:42.922336100Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.9.0\n",
      "numpy 1.26.4\n",
      "pandas 2.2.2\n",
      "sklearn 1.5.0\n",
      "torch 2.3.1+cpu\n",
      "cpu\n"
     ]
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "    \n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n",
    "\n",
    "seed = 42\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据准备\n",
    "\n",
    "https://www.kaggle.com/competitions/cifar-10/data\n",
    "\n",
    "```shell\n",
    "$ tree -L 1 cifar-10                                    \n",
    "cifar-10\n",
    "├── sampleSubmission.csv\n",
    "├── test\n",
    "├── train\n",
    "└── trainLabels.csv\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T02:58:50.165844600Z",
     "start_time": "2024-07-24T02:58:47.909271700Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[(WindowsPath('D:/cifar-10/train/1.png'), 'frog'),\n",
      " (WindowsPath('D:/cifar-10/train/2.png'), 'truck'),\n",
      " (WindowsPath('D:/cifar-10/train/3.png'), 'truck'),\n",
      " (WindowsPath('D:/cifar-10/train/4.png'), 'deer'),\n",
      " (WindowsPath('D:/cifar-10/train/5.png'), 'automobile')]\n",
      "[(WindowsPath('D:/cifar-10/test/1.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/2.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/3.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/4.png'), 'cat'),\n",
      " (WindowsPath('D:/cifar-10/test/5.png'), 'cat')]\n",
      "50000 300000\n"
     ]
    }
   ],
   "source": [
    "from pathlib import Path\n",
    "\n",
    "DATA_DIR = Path(\"D:/cifar-10\")\n",
    "\n",
    "train_lables_file = DATA_DIR / \"trainLabels.csv\"\n",
    "test_csv_file = DATA_DIR / \"sampleSubmission.csv\"\n",
    "train_folder = DATA_DIR / \"train\"\n",
    "test_folder = DATA_DIR / \"test\"\n",
    "\n",
    "#所有的类别\n",
    "class_names = [\n",
    "    'airplane',\n",
    "    'automobile',\n",
    "    'bird',\n",
    "    'cat',\n",
    "    'deer',\n",
    "    'dog',\n",
    "    'frog',\n",
    "    'horse',\n",
    "    'ship',\n",
    "    'truck',\n",
    "]\n",
    "\n",
    "def parse_csv_file(filepath, folder):\n",
    "    \"\"\"Parses csv files into (filename(path), label) format\"\"\"\n",
    "    results = []\n",
    "    #读取所有行\n",
    "    with open(filepath, 'r') as f:\n",
    "#         lines = f.readlines()  为什么加[1:]，可以试这个\n",
    "        #第一行不需要，因为第一行是标签\n",
    "        lines = f.readlines()[1:] \n",
    "    for line in lines:#依次去取每一行\n",
    "        image_id, label_str = line.strip('\\n').split(',')\n",
    "        image_full_path = folder / f\"{image_id}.png\" #得到图片的路径\n",
    "        results.append((image_full_path, label_str)) #把图片路径和分类放入列表\n",
    "    return results\n",
    "\n",
    "#解析对应的文件夹\n",
    "train_labels_info = parse_csv_file(train_lables_file, train_folder)\n",
    "test_csv_info = parse_csv_file(test_csv_file, test_folder)\n",
    "#打印\n",
    "import pprint\n",
    "pprint.pprint(train_labels_info[0:5])\n",
    "pprint.pprint(test_csv_info[0:5])\n",
    "print(len(train_labels_info), len(test_csv_info))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T02:58:50.267656900Z",
     "start_time": "2024-07-24T02:58:50.168844Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                  filepath       class\n",
      "0  D:\\cifar-10\\train\\1.png        frog\n",
      "1  D:\\cifar-10\\train\\2.png       truck\n",
      "2  D:\\cifar-10\\train\\3.png       truck\n",
      "3  D:\\cifar-10\\train\\4.png        deer\n",
      "4  D:\\cifar-10\\train\\5.png  automobile\n",
      "                      filepath       class\n",
      "0  D:\\cifar-10\\train\\45001.png       horse\n",
      "1  D:\\cifar-10\\train\\45002.png  automobile\n",
      "2  D:\\cifar-10\\train\\45003.png        deer\n",
      "3  D:\\cifar-10\\train\\45004.png  automobile\n",
      "4  D:\\cifar-10\\train\\45005.png    airplane\n",
      "                 filepath class\n",
      "0  D:\\cifar-10\\test\\1.png   cat\n",
      "1  D:\\cifar-10\\test\\2.png   cat\n",
      "2  D:\\cifar-10\\test\\3.png   cat\n",
      "3  D:\\cifar-10\\test\\4.png   cat\n",
      "4  D:\\cifar-10\\test\\5.png   cat\n"
     ]
    }
   ],
   "source": [
    "# train_df = pd.DataFrame(train_labels_info)\n",
    "train_df = pd.DataFrame(train_labels_info[0:45000])\n",
    "valid_df = pd.DataFrame(train_labels_info[45000:])\n",
    "test_df = pd.DataFrame(test_csv_info)\n",
    "\n",
    "train_df.columns = ['filepath', 'class']\n",
    "valid_df.columns = ['filepath', 'class']\n",
    "test_df.columns = ['filepath', 'class']\n",
    "\n",
    "print(train_df.head())\n",
    "print(valid_df.head())\n",
    "print(test_df.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T02:58:51.728297800Z",
     "start_time": "2024-07-24T02:58:50.271655200Z"
    }
   },
   "outputs": [],
   "source": [
    "from PIL import Image\n",
    "from torch.utils.data import Dataset, DataLoader\n",
    "from torchvision import transforms\n",
    "\n",
    "class Cifar10Dataset(Dataset):\n",
    "    df_map = {\n",
    "        \"train\": train_df,\n",
    "        \"eval\": valid_df,\n",
    "        \"test\": test_df\n",
    "    }\n",
    "    label_to_idx = {label: idx for idx, label in enumerate(class_names)}\n",
    "    idx_to_label = {idx: label for idx, label in enumerate(class_names)}\n",
    "    def __init__(self, mode, transform=None):\n",
    "        self.df = self.df_map.get(mode, None)\n",
    "        if self.df is None:\n",
    "            raise ValueError(\"mode should be one of train, val, test, but got {}\".format(mode))\n",
    "\n",
    "        self.transform = transform\n",
    "        \n",
    "    def __getitem__(self, index):\n",
    "        img_path, label = self.df.iloc[index]\n",
    "        img = Image.open(img_path).convert('RGB')\n",
    "        # # img 转换为 channel first\n",
    "        # img = img.transpose((2, 0, 1))\n",
    "        # transform\n",
    "        img = self.transform(img)\n",
    "        # label 转换为 idx\n",
    "        label = self.label_to_idx[label]\n",
    "        return img, label\n",
    "    \n",
    "    def __len__(self):\n",
    "        return self.df.shape[0]\n",
    "    \n",
    "IMAGE_SIZE = 32\n",
    "mean, std = [0.4914, 0.4822, 0.4465], [0.247, 0.243, 0.261]\n",
    "\n",
    "transforms_train = transforms.Compose([\n",
    "        # resize\n",
    "        transforms.Resize((IMAGE_SIZE, IMAGE_SIZE)),\n",
    "        # random rotation 40\n",
    "        transforms.RandomRotation(40),\n",
    "        # horizaontal flip\n",
    "        transforms.RandomHorizontalFlip(),\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize(mean, std)\n",
    "    ])\n",
    "\n",
    "transforms_eval = transforms.Compose([\n",
    "        # resize\n",
    "        transforms.Resize((IMAGE_SIZE, IMAGE_SIZE)),\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize(mean, std)\n",
    "    ])\n",
    "\n",
    "train_ds = Cifar10Dataset(\"train\", transforms_train)\n",
    "eval_ds = Cifar10Dataset(\"eval\", transforms_eval) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T02:58:51.733366Z",
     "start_time": "2024-07-24T02:58:51.732367700Z"
    }
   },
   "outputs": [],
   "source": [
    "batch_size = 128\n",
    "train_dl = DataLoader(train_ds, batch_size=batch_size, shuffle=True, num_workers=4)   \n",
    "eval_dl = DataLoader(eval_ds, batch_size=batch_size, shuffle=False, num_workers=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T02:58:51.745560900Z",
     "start_time": "2024-07-24T02:58:51.736749700Z"
    }
   },
   "outputs": [],
   "source": [
    "# 遍历train_ds得到每张图片，计算每个通道的均值和方差\n",
    "# def cal_mean_std(ds):\n",
    "#     mean = 0.\n",
    "#     std = 0.\n",
    "#     for img, _ in ds:\n",
    "#         mean += img.mean(dim=(1, 2))\n",
    "#         std += img.std(dim=(1, 2))\n",
    "#     mean /= len(ds)\n",
    "#     std /= len(ds)\n",
    "#     return mean, std\n",
    "#\n",
    "# # 经过 normalize 后 均值为0，方差为1\n",
    "# print(cal_mean_std(train_ds))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T03:08:26.235576800Z",
     "start_time": "2024-07-24T03:08:26.230056200Z"
    }
   },
   "outputs": [],
   "source": [
    "class Resdiual(nn.Module):\n",
    "    \"\"\"浅层的残差块，无bottleneck（性能限制），因为没有1*1\"\"\"\n",
    "    def __init__(self, input_channels, output_channels, use_1x1conv=False, stride=1):\n",
    "        \"\"\"\n",
    "        残差块\n",
    "        params filters: 过滤器数目，决定输出通道\n",
    "        params use_1x1conv: 是否使用 1x1 卷积，此时 stride=2，进行降采样\n",
    "        params strides: 步长，默认为1，当降采样的时候设置为2\n",
    "        \"\"\"\n",
    "        super().__init__()\n",
    "        self.conv1 = nn.Conv2d(\n",
    "            in_channels=input_channels,\n",
    "            out_channels=output_channels,\n",
    "            kernel_size=3,\n",
    "            stride=stride,\n",
    "            padding=1,\n",
    "        )\n",
    "        self.conv2 = nn.Conv2d(\n",
    "            in_channels=output_channels,\n",
    "            out_channels=output_channels,\n",
    "            kernel_size=3,\n",
    "            stride=1,\n",
    "            padding=1,\n",
    "        )  \n",
    "        if use_1x1conv:\n",
    "            # skip connection 的 1x1 卷积，用于改变通道数和降采样，使得最终可以做残差连接\n",
    "            self.conv_sc = nn.Conv2d(\n",
    "                in_channels=input_channels,\n",
    "                out_channels=output_channels,\n",
    "                kernel_size=1,\n",
    "                stride=stride,\n",
    "            )\n",
    "        else:\n",
    "            self.conv_sc = None\n",
    "        \n",
    "        self.bn1 = nn.BatchNorm2d(output_channels, eps=1e-5, momentum=0.9)\n",
    "        self.bn2 = nn.BatchNorm2d(output_channels, eps=1e-5, momentum=0.9)\n",
    "        \n",
    "    def forward(self, inputs):\n",
    "        \"\"\"forward\"\"\"\n",
    "        flow = F.relu(self.bn1(self.conv1(inputs))) #卷积->BN->ReLU\n",
    "        flow = self.bn2(self.conv2(flow)) #卷积->BN\n",
    "        if self.conv_sc:#如果有1x1卷积，就用1x1卷积\n",
    "            inputs = self.conv_sc(inputs)\n",
    "        return F.relu(flow + inputs) #残差连接->ReLU\n",
    "    \n",
    "#如果stride=2，则输出尺寸减半,如果stride=1，则输出尺寸不变"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T03:08:28.540154900Z",
     "start_time": "2024-07-24T03:08:28.534159100Z"
    }
   },
   "outputs": [],
   "source": [
    "class ResdiualBlock(nn.Module):\n",
    "    \"\"\"若干个 Resdiual 模块堆叠在一起，通常在第一个模块给 skip connection 使用 1x1conv with stride=2\"\"\"\n",
    "    def __init__(self, input_channels, output_channels, num, is_first=False):\n",
    "        \"\"\"\n",
    "        params filters: 过滤器数目\n",
    "        params num: 堆叠几个 Resdiual 模块\n",
    "        params is_first: 是不是第一个block。 最上面一层 Resdiual 的 stride=1,is_first=False,图像尺寸减半，False图像尺寸不变\n",
    "        \"\"\"\n",
    "        super().__init__()\n",
    "        self.model = nn.Sequential() # 用于存放 Resdiual 模块\n",
    "        self.model.append(Resdiual(\n",
    "            input_channels=input_channels, \n",
    "            output_channels=output_channels, \n",
    "            use_1x1conv=True,\n",
    "            stride=1 if is_first else 2\n",
    "            )) # 第一个 Resdiual 模块\n",
    "        for _ in range(1, num):\n",
    "            # 堆叠 num 个 Resdiual 模块\n",
    "            self.model.append(Resdiual(\n",
    "                input_channels=output_channels, \n",
    "                output_channels=output_channels,\n",
    "                use_1x1conv=False, stride=1\n",
    "                ))\n",
    "    def forward(self, inputs):\n",
    "        return self.model(inputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-24T03:08:32.031619500Z",
     "start_time": "2024-07-24T03:08:31.738966Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             model.0.weight             paramerters num: 432\n",
      "              model.0.bias              paramerters num: 16\n",
      "             model.1.weight             paramerters num: 16\n",
      "              model.1.bias              paramerters num: 16\n",
      "      model.3.model.0.conv1.weight      paramerters num: 9216\n",
      "       model.3.model.0.conv1.bias       paramerters num: 64\n",
      "      model.3.model.0.conv2.weight      paramerters num: 36864\n",
      "       model.3.model.0.conv2.bias       paramerters num: 64\n",
      "     model.3.model.0.conv_sc.weight     paramerters num: 1024\n",
      "      model.3.model.0.conv_sc.bias      paramerters num: 64\n",
      "       model.3.model.0.bn1.weight       paramerters num: 64\n",
      "        model.3.model.0.bn1.bias        paramerters num: 64\n",
      "       model.3.model.0.bn2.weight       paramerters num: 64\n",
      "        model.3.model.0.bn2.bias        paramerters num: 64\n",
      "      model.3.model.1.conv1.weight      paramerters num: 36864\n",
      "       model.3.model.1.conv1.bias       paramerters num: 64\n",
      "      model.3.model.1.conv2.weight      paramerters num: 36864\n",
      "       model.3.model.1.conv2.bias       paramerters num: 64\n",
      "       model.3.model.1.bn1.weight       paramerters num: 64\n",
      "        model.3.model.1.bn1.bias        paramerters num: 64\n",
      "       model.3.model.1.bn2.weight       paramerters num: 64\n",
      "        model.3.model.1.bn2.bias        paramerters num: 64\n",
      "      model.3.model.2.conv1.weight      paramerters num: 36864\n",
      "       model.3.model.2.conv1.bias       paramerters num: 64\n",
      "      model.3.model.2.conv2.weight      paramerters num: 36864\n",
      "       model.3.model.2.conv2.bias       paramerters num: 64\n",
      "       model.3.model.2.bn1.weight       paramerters num: 64\n",
      "        model.3.model.2.bn1.bias        paramerters num: 64\n",
      "       model.3.model.2.bn2.weight       paramerters num: 64\n",
      "        model.3.model.2.bn2.bias        paramerters num: 64\n",
      "      model.4.model.0.conv1.weight      paramerters num: 73728\n",
      "       model.4.model.0.conv1.bias       paramerters num: 128\n",
      "      model.4.model.0.conv2.weight      paramerters num: 147456\n",
      "       model.4.model.0.conv2.bias       paramerters num: 128\n",
      "     model.4.model.0.conv_sc.weight     paramerters num: 8192\n",
      "      model.4.model.0.conv_sc.bias      paramerters num: 128\n",
      "       model.4.model.0.bn1.weight       paramerters num: 128\n",
      "        model.4.model.0.bn1.bias        paramerters num: 128\n",
      "       model.4.model.0.bn2.weight       paramerters num: 128\n",
      "        model.4.model.0.bn2.bias        paramerters num: 128\n",
      "      model.4.model.1.conv1.weight      paramerters num: 147456\n",
      "       model.4.model.1.conv1.bias       paramerters num: 128\n",
      "      model.4.model.1.conv2.weight      paramerters num: 147456\n",
      "       model.4.model.1.conv2.bias       paramerters num: 128\n",
      "       model.4.model.1.bn1.weight       paramerters num: 128\n",
      "        model.4.model.1.bn1.bias        paramerters num: 128\n",
      "       model.4.model.1.bn2.weight       paramerters num: 128\n",
      "        model.4.model.1.bn2.bias        paramerters num: 128\n",
      "      model.4.model.2.conv1.weight      paramerters num: 147456\n",
      "       model.4.model.2.conv1.bias       paramerters num: 128\n",
      "      model.4.model.2.conv2.weight      paramerters num: 147456\n",
      "       model.4.model.2.conv2.bias       paramerters num: 128\n",
      "       model.4.model.2.bn1.weight       paramerters num: 128\n",
      "        model.4.model.2.bn1.bias        paramerters num: 128\n",
      "       model.4.model.2.bn2.weight       paramerters num: 128\n",
      "        model.4.model.2.bn2.bias        paramerters num: 128\n",
      "      model.4.model.3.conv1.weight      paramerters num: 147456\n",
      "       model.4.model.3.conv1.bias       paramerters num: 128\n",
      "      model.4.model.3.conv2.weight      paramerters num: 147456\n",
      "       model.4.model.3.conv2.bias       paramerters num: 128\n",
      "       model.4.model.3.bn1.weight       paramerters num: 128\n",
      "        model.4.model.3.bn1.bias        paramerters num: 128\n",
      "       model.4.model.3.bn2.weight       paramerters num: 128\n",
      "        model.4.model.3.bn2.bias        paramerters num: 128\n",
      "      model.5.model.0.conv1.weight      paramerters num: 294912\n",
      "       model.5.model.0.conv1.bias       paramerters num: 256\n",
      "      model.5.model.0.conv2.weight      paramerters num: 589824\n",
      "       model.5.model.0.conv2.bias       paramerters num: 256\n",
      "     model.5.model.0.conv_sc.weight     paramerters num: 32768\n",
      "      model.5.model.0.conv_sc.bias      paramerters num: 256\n",
      "       model.5.model.0.bn1.weight       paramerters num: 256\n",
      "        model.5.model.0.bn1.bias        paramerters num: 256\n",
      "       model.5.model.0.bn2.weight       paramerters num: 256\n",
      "        model.5.model.0.bn2.bias        paramerters num: 256\n",
      "      model.5.model.1.conv1.weight      paramerters num: 589824\n",
      "       model.5.model.1.conv1.bias       paramerters num: 256\n",
      "      model.5.model.1.conv2.weight      paramerters num: 589824\n",
      "       model.5.model.1.conv2.bias       paramerters num: 256\n",
      "       model.5.model.1.bn1.weight       paramerters num: 256\n",
      "        model.5.model.1.bn1.bias        paramerters num: 256\n",
      "       model.5.model.1.bn2.weight       paramerters num: 256\n",
      "        model.5.model.1.bn2.bias        paramerters num: 256\n",
      "      model.5.model.2.conv1.weight      paramerters num: 589824\n",
      "       model.5.model.2.conv1.bias       paramerters num: 256\n",
      "      model.5.model.2.conv2.weight      paramerters num: 589824\n",
      "       model.5.model.2.conv2.bias       paramerters num: 256\n",
      "       model.5.model.2.bn1.weight       paramerters num: 256\n",
      "        model.5.model.2.bn1.bias        paramerters num: 256\n",
      "       model.5.model.2.bn2.weight       paramerters num: 256\n",
      "        model.5.model.2.bn2.bias        paramerters num: 256\n",
      "      model.5.model.3.conv1.weight      paramerters num: 589824\n",
      "       model.5.model.3.conv1.bias       paramerters num: 256\n",
      "      model.5.model.3.conv2.weight      paramerters num: 589824\n",
      "       model.5.model.3.conv2.bias       paramerters num: 256\n",
      "       model.5.model.3.bn1.weight       paramerters num: 256\n",
      "        model.5.model.3.bn1.bias        paramerters num: 256\n",
      "       model.5.model.3.bn2.weight       paramerters num: 256\n",
      "        model.5.model.3.bn2.bias        paramerters num: 256\n",
      "      model.5.model.4.conv1.weight      paramerters num: 589824\n",
      "       model.5.model.4.conv1.bias       paramerters num: 256\n",
      "      model.5.model.4.conv2.weight      paramerters num: 589824\n",
      "       model.5.model.4.conv2.bias       paramerters num: 256\n",
      "       model.5.model.4.bn1.weight       paramerters num: 256\n",
      "        model.5.model.4.bn1.bias        paramerters num: 256\n",
      "       model.5.model.4.bn2.weight       paramerters num: 256\n",
      "        model.5.model.4.bn2.bias        paramerters num: 256\n",
      "      model.5.model.5.conv1.weight      paramerters num: 589824\n",
      "       model.5.model.5.conv1.bias       paramerters num: 256\n",
      "      model.5.model.5.conv2.weight      paramerters num: 589824\n",
      "       model.5.model.5.conv2.bias       paramerters num: 256\n",
      "       model.5.model.5.bn1.weight       paramerters num: 256\n",
      "        model.5.model.5.bn1.bias        paramerters num: 256\n",
      "       model.5.model.5.bn2.weight       paramerters num: 256\n",
      "        model.5.model.5.bn2.bias        paramerters num: 256\n",
      "      model.6.model.0.conv1.weight      paramerters num: 1179648\n",
      "       model.6.model.0.conv1.bias       paramerters num: 512\n",
      "      model.6.model.0.conv2.weight      paramerters num: 2359296\n",
      "       model.6.model.0.conv2.bias       paramerters num: 512\n",
      "     model.6.model.0.conv_sc.weight     paramerters num: 131072\n",
      "      model.6.model.0.conv_sc.bias      paramerters num: 512\n",
      "       model.6.model.0.bn1.weight       paramerters num: 512\n",
      "        model.6.model.0.bn1.bias        paramerters num: 512\n",
      "       model.6.model.0.bn2.weight       paramerters num: 512\n",
      "        model.6.model.0.bn2.bias        paramerters num: 512\n",
      "      model.6.model.1.conv1.weight      paramerters num: 2359296\n",
      "       model.6.model.1.conv1.bias       paramerters num: 512\n",
      "      model.6.model.1.conv2.weight      paramerters num: 2359296\n",
      "       model.6.model.1.conv2.bias       paramerters num: 512\n",
      "       model.6.model.1.bn1.weight       paramerters num: 512\n",
      "        model.6.model.1.bn1.bias        paramerters num: 512\n",
      "       model.6.model.1.bn2.weight       paramerters num: 512\n",
      "        model.6.model.1.bn2.bias        paramerters num: 512\n",
      "      model.6.model.2.conv1.weight      paramerters num: 2359296\n",
      "       model.6.model.2.conv1.bias       paramerters num: 512\n",
      "      model.6.model.2.conv2.weight      paramerters num: 2359296\n",
      "       model.6.model.2.conv2.bias       paramerters num: 512\n",
      "       model.6.model.2.bn1.weight       paramerters num: 512\n",
      "        model.6.model.2.bn1.bias        paramerters num: 512\n",
      "       model.6.model.2.bn2.weight       paramerters num: 512\n",
      "        model.6.model.2.bn2.bias        paramerters num: 512\n",
      "             model.9.weight             paramerters num: 5120\n",
      "              model.9.bias              paramerters num: 10\n"
     ]
    }
   ],
   "source": [
    "class ResNetForCifar10(nn.Module):\n",
    "    def __init__(self, n=3, num_classes=10):\n",
    "        \"\"\"\n",
    "        params units: 预测类别的数目\n",
    "        \"\"\"\n",
    "        super().__init__()\n",
    "        self.model = nn.Sequential(\n",
    "            nn.Conv2d(\n",
    "                in_channels=3,\n",
    "                out_channels=16,\n",
    "                kernel_size=3,\n",
    "                stride=1,\n",
    "            ),  #模拟论文中的7*7卷积\n",
    "            nn.BatchNorm2d(16, momentum=0.9, eps=1e-5),\n",
    "            nn.ReLU(),\n",
    "            ResdiualBlock(input_channels=16, output_channels=64, num=3, is_first=True),  # conv2_x\n",
    "            ResdiualBlock(input_channels=64, output_channels=128, num=4),  # conv3_x\n",
    "            ResdiualBlock(input_channels=128, output_channels=256, num=6),  # conv3_x\n",
    "            ResdiualBlock(input_channels=256, output_channels=512, num=3),  # conv3_x\n",
    "            # average pool\n",
    "            nn.AdaptiveAvgPool2d((1, 1)), #无论输入图片大小，输出都是1x1，把width和height压缩为1\n",
    "            nn.Flatten(),\n",
    "            # fully connected\n",
    "            nn.Linear(in_features=512, out_features=num_classes),\n",
    "            )\n",
    "        \n",
    "        self.init_weights()\n",
    "        \n",
    "    def init_weights(self):\n",
    "        \"\"\"使用 kaiming 均匀分布来初始化全连接层、卷积层的权重 W\"\"\"\n",
    "        for m in self.modules():\n",
    "            if isinstance(m, (nn.Linear, nn.Conv2d)):\n",
    "                nn.init.kaiming_uniform_(m.weight)\n",
    "                nn.init.zeros_(m.bias)\n",
    "        \n",
    "    def forward(self, inputs):\n",
    "        return self.model(inputs)\n",
    "\n",
    "\n",
    "for key, value in ResNetForCifar10(num_classes=len(class_names)).named_parameters():\n",
    "    print(f\"{key:^40}paramerters num: {np.prod(value.shape)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total trainable parameters: 21086826\n"
     ]
    }
   ],
   "source": [
    "#模型总参数量\n",
    "total_params = sum(p.numel() for p in ResNetForCifar10(num_classes=len(class_names)).parameters() if p.requires_grad)\n",
    "print(f\"Total trainable parameters: {total_params}\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-24T03:01:11.702604300Z",
     "start_time": "2024-07-24T03:01:11.425889Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([1, 10])\n"
     ]
    }
   ],
   "source": [
    "#随机一个样本，喂入model\n",
    "sample_data = torch.randn(1, 3, 32, 32)\n",
    "model=ResNetForCifar10(num_classes=len(class_names))\n",
    "output=model(sample_data)\n",
    "print(output.shape)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-07-24T03:08:35.847987800Z",
     "start_time": "2024-07-24T03:08:35.516829900Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练\n",
    "\n",
    "pytorch的训练需要自行实现，包括\n",
    "1. 定义损失函数\n",
    "2. 定义优化器\n",
    "3. 定义训练步\n",
    "4. 训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "@torch.no_grad()\n",
    "def evaluating(model, dataloader, loss_fct):\n",
    "    loss_list = []\n",
    "    pred_list = []\n",
    "    label_list = []\n",
    "    for datas, labels in dataloader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "        # 前向计算\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)         # 验证集损失\n",
    "        loss_list.append(loss.item())\n",
    "        \n",
    "        preds = logits.argmax(axis=-1)    # 验证集预测\n",
    "        pred_list.extend(preds.cpu().numpy().tolist())\n",
    "        label_list.extend(labels.cpu().numpy().tolist())\n",
    "        \n",
    "    acc = accuracy_score(label_list, pred_list)\n",
    "    return np.mean(loss_list), acc\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### TensorBoard 可视化\n",
    "\n",
    "\n",
    "训练过程中可以使用如下命令启动tensorboard服务。\n",
    "\n",
    "```shell\n",
    "tensorboard \\\n",
    "    --logdir=runs \\     # log 存放路径\n",
    "    --host 0.0.0.0 \\    # ip\n",
    "    --port 8848         # 端口\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.tensorboard import SummaryWriter\n",
    "\n",
    "\n",
    "class TensorBoardCallback:\n",
    "    def __init__(self, log_dir, flush_secs=10):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            log_dir (str): dir to write log.\n",
    "            flush_secs (int, optional): write to dsk each flush_secs seconds. Defaults to 10.\n",
    "        \"\"\"\n",
    "        self.writer = SummaryWriter(log_dir=log_dir, flush_secs=flush_secs)\n",
    "\n",
    "    def draw_model(self, model, input_shape):\n",
    "        self.writer.add_graph(model, input_to_model=torch.randn(input_shape))\n",
    "        \n",
    "    def add_loss_scalars(self, step, loss, val_loss):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/loss\", \n",
    "            tag_scalar_dict={\"loss\": loss, \"val_loss\": val_loss},\n",
    "            global_step=step,\n",
    "            )\n",
    "        \n",
    "    def add_acc_scalars(self, step, acc, val_acc):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/accuracy\",\n",
    "            tag_scalar_dict={\"accuracy\": acc, \"val_accuracy\": val_acc},\n",
    "            global_step=step,\n",
    "        )\n",
    "        \n",
    "    def add_lr_scalars(self, step, learning_rate):\n",
    "        self.writer.add_scalars(\n",
    "            main_tag=\"training/learning_rate\",\n",
    "            tag_scalar_dict={\"learning_rate\": learning_rate},\n",
    "            global_step=step,\n",
    "            \n",
    "        )\n",
    "    \n",
    "    def __call__(self, step, **kwargs):\n",
    "        # add loss\n",
    "        loss = kwargs.pop(\"loss\", None)\n",
    "        val_loss = kwargs.pop(\"val_loss\", None)\n",
    "        if loss is not None and val_loss is not None:\n",
    "            self.add_loss_scalars(step, loss, val_loss)\n",
    "        # add acc\n",
    "        acc = kwargs.pop(\"acc\", None)\n",
    "        val_acc = kwargs.pop(\"val_acc\", None)\n",
    "        if acc is not None and val_acc is not None:\n",
    "            self.add_acc_scalars(step, acc, val_acc)\n",
    "        # add lr\n",
    "        learning_rate = kwargs.pop(\"lr\", None)\n",
    "        if learning_rate is not None:\n",
    "            self.add_lr_scalars(step, learning_rate)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Save Best\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SaveCheckpointsCallback:\n",
    "    def __init__(self, save_dir, save_step=5000, save_best_only=True):\n",
    "        \"\"\"\n",
    "        Save checkpoints each save_epoch epoch. \n",
    "        We save checkpoint by epoch in this implementation.\n",
    "        Usually, training scripts with pytorch evaluating model and save checkpoint by step.\n",
    "\n",
    "        Args:\n",
    "            save_dir (str): dir to save checkpoint\n",
    "            save_epoch (int, optional): the frequency to save checkpoint. Defaults to 1.\n",
    "            save_best_only (bool, optional): If True, only save the best model or save each model at every epoch.\n",
    "        \"\"\"\n",
    "        self.save_dir = save_dir\n",
    "        self.save_step = save_step\n",
    "        self.save_best_only = save_best_only\n",
    "        self.best_metrics = -1\n",
    "        \n",
    "        # mkdir\n",
    "        if not os.path.exists(self.save_dir):\n",
    "            os.mkdir(self.save_dir)\n",
    "        \n",
    "    def __call__(self, step, state_dict, metric=None):\n",
    "        if step % self.save_step > 0:\n",
    "            return\n",
    "        \n",
    "        if self.save_best_only:\n",
    "            assert metric is not None\n",
    "            if metric >= self.best_metrics:\n",
    "                # save checkpoints\n",
    "                torch.save(state_dict, os.path.join(self.save_dir, \"best.ckpt\"))\n",
    "                # update best metrics\n",
    "                self.best_metrics = metric\n",
    "        else:\n",
    "            torch.save(state_dict, os.path.join(self.save_dir, f\"{step}.ckpt\"))\n",
    "\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Early Stop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        \"\"\"\n",
    "\n",
    "        Args:\n",
    "            patience (int, optional): Number of epochs with no improvement after which training will be stopped.. Defaults to 5.\n",
    "            min_delta (float, optional): Minimum change in the monitored quantity to qualify as an improvement, i.e. an absolute \n",
    "                change of less than min_delta, will count as no improvement. Defaults to 0.01.\n",
    "        \"\"\"\n",
    "        self.patience = patience\n",
    "        self.min_delta = min_delta\n",
    "        self.best_metric = -1\n",
    "        self.counter = 0\n",
    "        \n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:\n",
    "            # update best metric\n",
    "            self.best_metric = metric\n",
    "            # reset counter \n",
    "            self.counter = 0\n",
    "        else: \n",
    "            self.counter += 1\n",
    "            \n",
    "    @property\n",
    "    def early_stop(self):\n",
    "        return self.counter >= self.patience\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "27aa7f3b14c747038b8cb32b4d9884b1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/7040 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 训练\n",
    "def training(\n",
    "    model, \n",
    "    train_loader, \n",
    "    val_loader, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=None,\n",
    "    save_ckpt_callback=None,\n",
    "    early_stop_callback=None,\n",
    "    eval_step=500,\n",
    "    ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "    \n",
    "    global_step = 0\n",
    "    model.train()\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            # training\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "                # 梯度清空\n",
    "                optimizer.zero_grad()\n",
    "                # 模型前向计算\n",
    "                logits = model(datas)\n",
    "                # 计算损失\n",
    "                loss = loss_fct(logits, labels)\n",
    "                # 梯度回传\n",
    "                loss.backward()\n",
    "                # 调整优化器，包括学习率的变动等\n",
    "                optimizer.step()\n",
    "                preds = logits.argmax(axis=-1)\n",
    "            \n",
    "                acc = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())    \n",
    "                loss = loss.cpu().item()\n",
    "                # record\n",
    "                \n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss, \"acc\": acc, \"step\": global_step\n",
    "                })\n",
    "                \n",
    "                # evaluating\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()\n",
    "                    val_loss, val_acc = evaluating(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"acc\": val_acc, \"step\": global_step\n",
    "                    })\n",
    "                    model.train()\n",
    "                    \n",
    "                    # 1. 使用 tensorboard 可视化\n",
    "                    if tensorboard_callback is not None:\n",
    "                        tensorboard_callback(\n",
    "                            global_step, \n",
    "                            loss=loss, val_loss=val_loss,\n",
    "                            acc=acc, val_acc=val_acc,\n",
    "                            lr=optimizer.param_groups[0][\"lr\"],\n",
    "                            )\n",
    "                \n",
    "                    # 2. 保存模型权重 save model checkpoint\n",
    "                    if save_ckpt_callback is not None:\n",
    "                        save_ckpt_callback(global_step, model.state_dict(), metric=val_acc)\n",
    "\n",
    "                    # 3. 早停 Early Stop\n",
    "                    if early_stop_callback is not None:\n",
    "                        early_stop_callback(val_acc)\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict\n",
    "                    \n",
    "                # udate step\n",
    "                global_step += 1\n",
    "                pbar.update(1)\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "        \n",
    "    return record_dict\n",
    "        \n",
    "\n",
    "epoch = 20\n",
    "\n",
    "model = ResNetForCifar10(num_classes=10)\n",
    "\n",
    "# 1. 定义损失函数 采用交叉熵损失\n",
    "loss_fct = nn.CrossEntropyLoss()\n",
    "# 2. 定义优化器 采用 Rmsprop\n",
    "# Optimizers specified in the torch.optim package\n",
    "# >>> # Assuming optimizer uses lr = 0.05 for all groups\n",
    "# >>> # lr = 0.05     if epoch < 30\n",
    "# >>> # lr = 0.005    if 30 <= epoch < 80\n",
    "# >>> # lr = 0.0005   if epoch >= 80\n",
    "# >>> scheduler = MultiStepLR(optimizer, milestones=[30,80], gamma=0.1)\n",
    "\n",
    "class OptimizerWithScheduler:\n",
    "    def __init__(self, parameters, lr, momentum, weight_decay):\n",
    "        self.optimizer = torch.optim.SGD(parameters, lr=lr, momentum=momentum, weight_decay=weight_decay) # 优化器\n",
    "        self.scheduler = torch.optim.lr_scheduler.MultiStepLR(self.optimizer, milestones=[32_000, 48_000], gamma=0.1) # 学习率衰减\n",
    "        \n",
    "    def step(self):\n",
    "        self.optimizer.step()\n",
    "        self.scheduler.step()\n",
    "        \n",
    "    @property\n",
    "    def param_groups(self):\n",
    "        return self.optimizer.param_groups\n",
    "        \n",
    "    def zero_grad(self):\n",
    "        self.optimizer.zero_grad()\n",
    "        \n",
    "optimizer = OptimizerWithScheduler(model.parameters(), lr=0.1, momentum=0.9, weight_decay=1e-4)\n",
    "\n",
    "# 1. tensorboard 可视化\n",
    "if not os.path.exists(\"runs\"):\n",
    "    os.mkdir(\"runs\")\n",
    "    \n",
    "exp_name = \"resnet34\"\n",
    "tensorboard_callback = TensorBoardCallback(f\"runs/{exp_name}\")\n",
    "tensorboard_callback.draw_model(model, [1, 3, IMAGE_SIZE, IMAGE_SIZE])\n",
    "# 2. save best\n",
    "if not os.path.exists(\"checkpoints\"):\n",
    "    os.makedirs(\"checkpoints\")\n",
    "save_ckpt_callback = SaveCheckpointsCallback(f\"checkpoints/{exp_name}\", save_step=len(train_dl), save_best_only=True)\n",
    "# 3. early stop\n",
    "early_stop_callback = EarlyStopCallback(patience=5)\n",
    "\n",
    "model = model.to(device)\n",
    "record = training(\n",
    "    model, \n",
    "    train_dl, \n",
    "    eval_dl, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=tensorboard_callback,\n",
    "    save_ckpt_callback=save_ckpt_callback,\n",
    "    early_stop_callback=early_stop_callback,\n",
    "    eval_step=len(train_dl)\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAy0AAAHFCAYAAAD/mBbAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAADbwklEQVR4nOzdd5wTdfrA8c+kbgeWshTpHekgCCiiUhTl9GxYzsIpNjgLVs6KDSvH/Wx4KmLvXRFBFJXeRJFepMPSt++mzPz+CMlOkknbPsvzfr3QzWS+M0+yyWaePN+iaJqmIYQQQgghhBA1lKW6AxBCCCGEEEKIaCRpEUIIIYQQQtRokrQIIYQQQgghajRJWoQQQgghhBA1miQtQgghhBBCiBpNkhYhhBBCCCFEjSZJixBCCCGEEKJGk6RFCCGEEEIIUaNJ0iKEEEIIIYSo0SRpEUIIIYQQQtRoCSctu3fv5h//+Af169cnOTmZbt26sXz58sqITQghhBBCCCGwJbLzkSNHGDRoEKeffjrfffcdDRs2ZNOmTdSrV6+y4hNCCCGEEEIc5xRN07R4d7733ntZsGABv/76a2XGJIQQQgghhBABCSUtXbp0YcSIEezatYuff/6ZZs2acfPNNzN27NiIbUpKSigpKQncVlWVw4cPU79+fRRFKV/0Qggh4qZpGnl5eTRt2hSLRYY0+qmqyp49e0hPT5fPJSGEqGJxfzZpCXA6nZrT6dQmTpyorVy5UnvllVe0pKQkbcaMGRHbPPTQQxog/+Sf/JN/8q+G/Nu5c2cif/prvZ07d1b770T+yT/5J/+O93+xPpsSqrQ4HA769u3LwoULA9tuueUWli1bxqJFiwzbhFZacnJyaNGiBX/99Rfp6enxnjrA7Xbz008/cfrpp2O32xNuXx3MGDOYM24zxgzmjNuMMYM5466omPPy8mjdujVHjx6lTp06FRihueXk5FC3bl127txJRkZGwu3dbjezZ89m+PDhpnlNgTnjNmPMIHFXJTPGDOaMu6Jizs3NpXnz5jE/mxIaiN+kSRO6dOkStK1z5858+umnEds4nU6cTmfY9szMzDJ/OKSkpFC/fn1T/VLNFjOYM24zxgzmjNuMMYM5466omP1tpQtUMP/zkZGRUa7PpYyMDNO8psCccZsxZpC4q5IZYwZzxl3RMcf6bEqoU/OgQYPYsGFD0LaNGzfSsmXLxCMTQgghhBBCiDgklLTcfvvtLF68mCeeeILNmzfz3nvv8b///Y9x48ZVVnxCCCGEEEKI41xCSctJJ53E559/zvvvv0/Xrl159NFHmTp1KldccUVlxSeEEEIIIYQ4ziU0pgXg3HPP5dxzz62MWIQQ1UjTNDweD16vN6793W43NpuN4uLiuNvUBGaMO96YrVYrNptNxqxUgmjvDzO+psCccZclZnlfCFE7JJy0CCFqH5fLxd69eyksLIy7jaZpNG7cmJ07d5rqYsCMcScSc0pKCk2aNMHhcFRRdLVfrPeHGV9TYM64yxqzvC+EMD9JWoQ4zqmqyl9//YXVaqVp06Y4HI64LgZUVSU/P5+0tDRTLVRoxrjjiVnTNFwuFwcOHOCvv/6iffv2pnl8NVk87w8zvqbAnHEnGrO8L4SoPSRpEeI453K5UFWV5s2bk5KSEnc7VVVxuVwkJSWZ6iLAjHHHG3NycjJ2u53t27cH9hflE8/7w4yvKTBn3GWJWd4XQtQO5vgrJYSodGa5aBHRye+xcsjzam7y+xPC/ORdLIQQQgghhKjRJGkRQgghhBBC1GiStAghBNCqVSumTp1aIceaN28eiqJw9OjRCjmeENWtIt8fQghRFjIQXwhhWkOGDKFnz54VcjG1bNkyUlNTyx+UEDWEvD+EELWJJC1CiFpL0zS8Xi82W+w/dQ0bNqyCiISoOfwLZsZD3h9CiOpmqu5hX/y2m3NfWMhX200VthCmomkahS5PXP+KXN64943nn6Zpccd5zTXX8PPPP/Pf//4XRVFQFIUZM2agKArfffcdffr0wel0Mn/+fLZs2cJ5551HVlYWGRkZnHHGGfzwww9Bxwvt/qIoCq+99hp///vfSUlJoX379nz11Vdlfl4//fRTTjzxRJxOJ61ateK5554Luv+ll16iffv2JCUlkZWVxUUXXRS475NPPmHgwIGkpqZSv359hg4dSkFBQZljEeVj9B6p6PdCed8j8bw/kpOTWbx4cdD7Iy0tjZNOOqlS3x9er5drr72W1q1bk5ycTMeOHfnvf/8btt/06dMD75kmTZowfvz4wH1Hjx7lhhtuICsri6SkJLp27co333wT1/mFMLs1e3K4avpS/tydw6crdnHdm8spKInvCwgzM1Wl5XCBiw3Z+aTWr+5IhKi9itxeujz4fbWce+0jI0hxxPdn6b///S8bN26ka9euPPLIIwCsWbMGgHvvvZdnn32WNm3aUK9ePXbu3MnIkSN5/PHHsdvtvPbaa5x33nls2LCBFi1aRDzHpEmTePrpp3nmmWd4/vnnueKKK9i+fTuZmZkJPa4VK1ZwySWX8PDDDzN69GgWLlzIzTffTP369bnmmmtYvnw5t9xyC2+//TYDBw7k8OHD/PrrrwDs3buXK664gkmTJnHppZdSUFDAr7/+mlCCJyqWGd4j8bw/WrVqhc1m4+jRo4H3h9Pp5K233mLUqFGV9v5QVZUTTjiBjz/+mPr167Nw4UKuv/56mjRpwiWXXALAyy+/zIQJE3jyySc5++yzycnJYcGCBYH255xzDnl5ebzzzju0bduWtWvXYrVa43oOhTC7S/+3mLxiD0v/OkSxWwXg9fl/ccuZ7as5ssplqqQljkW6hRDHiTp16uBwOEhJSaFx48YArF+/HoBHHnmEYcOGBfbNzMykR48egO+C57777uO7777jq6++Cvr2NtQ111zDZZddBsATTzzB//3f/7F06VLOOuushGKdMmUKZ555Jg888AAAHTp0YO3atTzzzDNcc8017Nixg9TUVM4991zS09Np2bIlvXr1AnxJi8fj4dxzz6VVq1ZYLBa6deuW0PnF8See94eqquTm5ga93gAeffRRPv/880p7f9jtdiZNmhS43bp1axYtWsRHH30USFoee+wx7rjjDm699dbAfieddBKqqjJv3jyWLl3KunXr6NChAwBt2rRJ5OkRwtTyin1VFX/CAr4v9ms7UyUtfvL9ohCVJ9luZe0jI2Lup6oqebl5pGekV9jCbcn2ivmmtG/fvkG38/Pzefjhh/n2228DSUBRURE7duyIepzu3bsHfk5NTSUjI4P9+/cnHM+6des477zzgrYNGjSIqVOn4vV6GTZsGC1btqRNmzacddZZnHXWWYFuNz169ODMM8/klFNOYfjw4YwYMYKLLrqIevXqJRyHqBih75HKeC9EO3d5Gb0/HnnkkSp9f7z44otMnz6dHTt2UFRUhMvlomfPngDs37+fPXv2cOaZZxq2Xb16NSeccEIgYRFV40BeCbuOFNKrhfztqSweFRZvPUz/tg1x2GQoRChTJS1SaBGi8imKElf3E1VV8TispDhsNW616dBZju68807mzJkT6DLm9Xr55z//icsV/Zspu90edFtR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",
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"585.974598pt\" height=\"325.672704pt\" viewBox=\"0 0 585.974598 325.672704\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n",
       " <metadata>\n",
       "  <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
       "   <cc:Work>\n",
       "    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
       "    <dc:date>2023-06-01T01:14:10.354406</dc:date>\n",
       "    <dc:format>image/svg+xml</dc:format>\n",
       "    <dc:creator>\n",
       "     <cc:Agent>\n",
       "      <dc:title>Matplotlib v3.6.3, https://matplotlib.org/</dc:title>\n",
       "     </cc:Agent>\n",
       "    </dc:creator>\n",
       "   </cc:Work>\n",
       "  </rdf:RDF>\n",
       " </metadata>\n",
       " <defs>\n",
       "  <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M 0 325.672704 \n",
       "L 585.974598 325.672704 \n",
       "L 585.974598 0 \n",
       "L 0 0 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"patch_2\">\n",
       "    <path d=\"M 20.5625 288.116454 \n",
       "L 274.198864 288.116454 \n",
       "L 274.198864 10.916454 \n",
       "L 20.5625 10.916454 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_1\">\n",
       "    <g id=\"xtick_1\">\n",
       "     <g id=\"line2d_1\">\n",
       "      <path d=\"M 32.091426 288.116454 \n",
       "L 32.091426 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_2\">\n",
       "      <defs>\n",
       "       <path id=\"mfd8a3b0112\" d=\"M 0 0 \n",
       "L 0 3.5 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"32.091426\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_1\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(28.910176 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \n",
       "Q 1547 4250 1301 3770 \n",
       "Q 1056 3291 1056 2328 \n",
       "Q 1056 1369 1301 889 \n",
       "Q 1547 409 2034 409 \n",
       "Q 2525 409 2770 889 \n",
       "Q 3016 1369 3016 2328 \n",
       "Q 3016 3291 2770 3770 \n",
       "Q 2525 4250 2034 4250 \n",
       "z\n",
       "M 2034 4750 \n",
       "Q 2819 4750 3233 4129 \n",
       "Q 3647 3509 3647 2328 \n",
       "Q 3647 1150 3233 529 \n",
       "Q 2819 -91 2034 -91 \n",
       "Q 1250 -91 836 529 \n",
       "Q 422 1150 422 2328 \n",
       "Q 422 3509 836 4129 \n",
       "Q 1250 4750 2034 4750 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_2\">\n",
       "     <g id=\"line2d_3\">\n",
       "      <path d=\"M 64.890645 288.116454 \n",
       "L 64.890645 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_4\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"64.890645\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_2\">\n",
       "      <!-- 1000 -->\n",
       "      <g transform=\"translate(52.165645 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-31\" d=\"M 794 531 \n",
       "L 1825 531 \n",
       "L 1825 4091 \n",
       "L 703 3866 \n",
       "L 703 4441 \n",
       "L 1819 4666 \n",
       "L 2450 4666 \n",
       "L 2450 531 \n",
       "L 3481 531 \n",
       "L 3481 0 \n",
       "L 794 0 \n",
       "L 794 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_3\">\n",
       "     <g id=\"line2d_5\">\n",
       "      <path d=\"M 97.689864 288.116454 \n",
       "L 97.689864 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_6\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"97.689864\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_3\">\n",
       "      <!-- 2000 -->\n",
       "      <g transform=\"translate(84.964864 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-32\" d=\"M 1228 531 \n",
       "L 3431 531 \n",
       "L 3431 0 \n",
       "L 469 0 \n",
       "L 469 531 \n",
       "Q 828 903 1448 1529 \n",
       "Q 2069 2156 2228 2338 \n",
       "Q 2531 2678 2651 2914 \n",
       "Q 2772 3150 2772 3378 \n",
       "Q 2772 3750 2511 3984 \n",
       "Q 2250 4219 1831 4219 \n",
       "Q 1534 4219 1204 4116 \n",
       "Q 875 4013 500 3803 \n",
       "L 500 4441 \n",
       "Q 881 4594 1212 4672 \n",
       "Q 1544 4750 1819 4750 \n",
       "Q 2544 4750 2975 4387 \n",
       "Q 3406 4025 3406 3419 \n",
       "Q 3406 3131 3298 2873 \n",
       "Q 3191 2616 2906 2266 \n",
       "Q 2828 2175 2409 1742 \n",
       "Q 1991 1309 1228 531 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_4\">\n",
       "     <g id=\"line2d_7\">\n",
       "      <path d=\"M 130.489084 288.116454 \n",
       "L 130.489084 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_8\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"130.489084\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_4\">\n",
       "      <!-- 3000 -->\n",
       "      <g transform=\"translate(117.764084 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \n",
       "Q 3050 2419 3304 2112 \n",
       "Q 3559 1806 3559 1356 \n",
       "Q 3559 666 3084 287 \n",
       "Q 2609 -91 1734 -91 \n",
       "Q 1441 -91 1130 -33 \n",
       "Q 819 25 488 141 \n",
       "L 488 750 \n",
       "Q 750 597 1062 519 \n",
       "Q 1375 441 1716 441 \n",
       "Q 2309 441 2620 675 \n",
       "Q 2931 909 2931 1356 \n",
       "Q 2931 1769 2642 2001 \n",
       "Q 2353 2234 1838 2234 \n",
       "L 1294 2234 \n",
       "L 1294 2753 \n",
       "L 1863 2753 \n",
       "Q 2328 2753 2575 2939 \n",
       "Q 2822 3125 2822 3475 \n",
       "Q 2822 3834 2567 4026 \n",
       "Q 2313 4219 1838 4219 \n",
       "Q 1578 4219 1281 4162 \n",
       "Q 984 4106 628 3988 \n",
       "L 628 4550 \n",
       "Q 988 4650 1302 4700 \n",
       "Q 1616 4750 1894 4750 \n",
       "Q 2613 4750 3031 4423 \n",
       "Q 3450 4097 3450 3541 \n",
       "Q 3450 3153 3228 2886 \n",
       "Q 3006 2619 2597 2516 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-33\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_5\">\n",
       "     <g id=\"line2d_9\">\n",
       "      <path d=\"M 163.288303 288.116454 \n",
       "L 163.288303 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_10\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"163.288303\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_5\">\n",
       "      <!-- 4000 -->\n",
       "      <g transform=\"translate(150.563303 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \n",
       "L 825 1625 \n",
       "L 2419 1625 \n",
       "L 2419 4116 \n",
       "z\n",
       "M 2253 4666 \n",
       "L 3047 4666 \n",
       "L 3047 1625 \n",
       "L 3713 1625 \n",
       "L 3713 1100 \n",
       "L 3047 1100 \n",
       "L 3047 0 \n",
       "L 2419 0 \n",
       "L 2419 1100 \n",
       "L 313 1100 \n",
       "L 313 1709 \n",
       "L 2253 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-34\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_6\">\n",
       "     <g id=\"line2d_11\">\n",
       "      <path d=\"M 196.087523 288.116454 \n",
       "L 196.087523 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_12\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"196.087523\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_6\">\n",
       "      <!-- 5000 -->\n",
       "      <g transform=\"translate(183.362523 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-35\" d=\"M 691 4666 \n",
       "L 3169 4666 \n",
       "L 3169 4134 \n",
       "L 1269 4134 \n",
       "L 1269 2991 \n",
       "Q 1406 3038 1543 3061 \n",
       "Q 1681 3084 1819 3084 \n",
       "Q 2600 3084 3056 2656 \n",
       "Q 3513 2228 3513 1497 \n",
       "Q 3513 744 3044 326 \n",
       "Q 2575 -91 1722 -91 \n",
       "Q 1428 -91 1123 -41 \n",
       "Q 819 9 494 109 \n",
       "L 494 744 \n",
       "Q 775 591 1075 516 \n",
       "Q 1375 441 1709 441 \n",
       "Q 2250 441 2565 725 \n",
       "Q 2881 1009 2881 1497 \n",
       "Q 2881 1984 2565 2268 \n",
       "Q 2250 2553 1709 2553 \n",
       "Q 1456 2553 1204 2497 \n",
       "Q 953 2441 691 2322 \n",
       "L 691 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-35\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_7\">\n",
       "     <g id=\"line2d_13\">\n",
       "      <path d=\"M 228.886742 288.116454 \n",
       "L 228.886742 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_14\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"228.886742\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_7\">\n",
       "      <!-- 6000 -->\n",
       "      <g transform=\"translate(216.161742 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \n",
       "Q 1688 2584 1439 2293 \n",
       "Q 1191 2003 1191 1497 \n",
       "Q 1191 994 1439 701 \n",
       "Q 1688 409 2113 409 \n",
       "Q 2538 409 2786 701 \n",
       "Q 3034 994 3034 1497 \n",
       "Q 3034 2003 2786 2293 \n",
       "Q 2538 2584 2113 2584 \n",
       "z\n",
       "M 3366 4563 \n",
       "L 3366 3988 \n",
       "Q 3128 4100 2886 4159 \n",
       "Q 2644 4219 2406 4219 \n",
       "Q 1781 4219 1451 3797 \n",
       "Q 1122 3375 1075 2522 \n",
       "Q 1259 2794 1537 2939 \n",
       "Q 1816 3084 2150 3084 \n",
       "Q 2853 3084 3261 2657 \n",
       "Q 3669 2231 3669 1497 \n",
       "Q 3669 778 3244 343 \n",
       "Q 2819 -91 2113 -91 \n",
       "Q 1303 -91 875 529 \n",
       "Q 447 1150 447 2328 \n",
       "Q 447 3434 972 4092 \n",
       "Q 1497 4750 2381 4750 \n",
       "Q 2619 4750 2861 4703 \n",
       "Q 3103 4656 3366 4563 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-36\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_8\">\n",
       "     <g id=\"line2d_15\">\n",
       "      <path d=\"M 261.685961 288.116454 \n",
       "L 261.685961 10.916454 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_16\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"261.685961\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_8\">\n",
       "      <!-- 7000 -->\n",
       "      <g transform=\"translate(248.960961 302.714892) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-37\" d=\"M 525 4666 \n",
       "L 3525 4666 \n",
       "L 3525 4397 \n",
       "L 1831 0 \n",
       "L 1172 0 \n",
       "L 2766 4134 \n",
       "L 525 4134 \n",
       "L 525 4666 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-37\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"text_9\">\n",
       "     <!-- step -->\n",
       "     <g transform=\"translate(136.565057 316.393017) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \n",
       "L 2834 2853 \n",
       "Q 2591 2978 2328 3040 \n",
       "Q 2066 3103 1784 3103 \n",
       "Q 1356 3103 1142 2972 \n",
       "Q 928 2841 928 2578 \n",
       "Q 928 2378 1081 2264 \n",
       "Q 1234 2150 1697 2047 \n",
       "L 1894 2003 \n",
       "Q 2506 1872 2764 1633 \n",
       "Q 3022 1394 3022 966 \n",
       "Q 3022 478 2636 193 \n",
       "Q 2250 -91 1575 -91 \n",
       "Q 1294 -91 989 -36 \n",
       "Q 684 19 347 128 \n",
       "L 347 722 \n",
       "Q 666 556 975 473 \n",
       "Q 1284 391 1588 391 \n",
       "Q 1994 391 2212 530 \n",
       "Q 2431 669 2431 922 \n",
       "Q 2431 1156 2273 1281 \n",
       "Q 2116 1406 1581 1522 \n",
       "L 1381 1569 \n",
       "Q 847 1681 609 1914 \n",
       "Q 372 2147 372 2553 \n",
       "Q 372 3047 722 3315 \n",
       "Q 1072 3584 1716 3584 \n",
       "Q 2034 3584 2315 3537 \n",
       "Q 2597 3491 2834 3397 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \n",
       "L 1172 3500 \n",
       "L 2356 3500 \n",
       "L 2356 3053 \n",
       "L 1172 3053 \n",
       "L 1172 1153 \n",
       "Q 1172 725 1289 603 \n",
       "Q 1406 481 1766 481 \n",
       "L 2356 481 \n",
       "L 2356 0 \n",
       "L 1766 0 \n",
       "Q 1100 0 847 248 \n",
       "Q 594 497 594 1153 \n",
       "L 594 3053 \n",
       "L 172 3053 \n",
       "L 172 3500 \n",
       "L 594 3500 \n",
       "L 594 4494 \n",
       "L 1172 4494 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \n",
       "L 3597 1613 \n",
       "L 953 1613 \n",
       "Q 991 1019 1311 708 \n",
       "Q 1631 397 2203 397 \n",
       "Q 2534 397 2845 478 \n",
       "Q 3156 559 3463 722 \n",
       "L 3463 178 \n",
       "Q 3153 47 2828 -22 \n",
       "Q 2503 -91 2169 -91 \n",
       "Q 1331 -91 842 396 \n",
       "Q 353 884 353 1716 \n",
       "Q 353 2575 817 3079 \n",
       "Q 1281 3584 2069 3584 \n",
       "Q 2775 3584 3186 3129 \n",
       "Q 3597 2675 3597 1894 \n",
       "z\n",
       "M 3022 2063 \n",
       "Q 3016 2534 2758 2815 \n",
       "Q 2500 3097 2075 3097 \n",
       "Q 1594 3097 1305 2825 \n",
       "Q 1016 2553 972 2059 \n",
       "L 3022 2063 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-70\" d=\"M 1159 525 \n",
       "L 1159 -1331 \n",
       "L 581 -1331 \n",
       "L 581 3500 \n",
       "L 1159 3500 \n",
       "L 1159 2969 \n",
       "Q 1341 3281 1617 3432 \n",
       "Q 1894 3584 2278 3584 \n",
       "Q 2916 3584 3314 3078 \n",
       "Q 3713 2572 3713 1747 \n",
       "Q 3713 922 3314 415 \n",
       "Q 2916 -91 2278 -91 \n",
       "Q 1894 -91 1617 61 \n",
       "Q 1341 213 1159 525 \n",
       "z\n",
       "M 3116 1747 \n",
       "Q 3116 2381 2855 2742 \n",
       "Q 2594 3103 2138 3103 \n",
       "Q 1681 3103 1420 2742 \n",
       "Q 1159 2381 1159 1747 \n",
       "Q 1159 1113 1420 752 \n",
       "Q 1681 391 2138 391 \n",
       "Q 2594 391 2855 752 \n",
       "Q 3116 1113 3116 1747 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-73\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-74\" x=\"52.099609\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-65\" x=\"91.308594\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-70\" x=\"152.832031\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_2\">\n",
       "    <g id=\"ytick_1\">\n",
       "     <g id=\"line2d_17\">\n",
       "      <path d=\"M 20.5625 252.117036 \n",
       "L 274.198864 252.117036 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_18\">\n",
       "      <defs>\n",
       "       <path id=\"m2fc0d90a93\" d=\"M 0 0 \n",
       "L -3.5 0 \n",
       "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"20.5625\" y=\"252.117036\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_10\">\n",
       "      <!-- 1 -->\n",
       "      <g transform=\"translate(7.2 255.916255) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_2\">\n",
       "     <g id=\"line2d_19\">\n",
       "      <path d=\"M 20.5625 203.893473 \n",
       "L 274.198864 203.893473 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_20\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"20.5625\" y=\"203.893473\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_11\">\n",
       "      <!-- 2 -->\n",
       "      <g transform=\"translate(7.2 207.692692) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_3\">\n",
       "     <g id=\"line2d_21\">\n",
       "      <path d=\"M 20.5625 155.669909 \n",
       "L 274.198864 155.669909 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_22\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"20.5625\" y=\"155.669909\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_12\">\n",
       "      <!-- 3 -->\n",
       "      <g transform=\"translate(7.2 159.469128) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-33\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_4\">\n",
       "     <g id=\"line2d_23\">\n",
       "      <path d=\"M 20.5625 107.446346 \n",
       "L 274.198864 107.446346 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_24\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"20.5625\" y=\"107.446346\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_13\">\n",
       "      <!-- 4 -->\n",
       "      <g transform=\"translate(7.2 111.245565) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-34\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_5\">\n",
       "     <g id=\"line2d_25\">\n",
       "      <path d=\"M 20.5625 59.222782 \n",
       "L 274.198864 59.222782 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_26\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"20.5625\" y=\"59.222782\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_14\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(7.2 63.022001) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-35\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_6\">\n",
       "     <g id=\"line2d_27\">\n",
       "      <path d=\"M 20.5625 10.999219 \n",
       "L 274.198864 10.999219 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_28\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"20.5625\" y=\"10.999219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_15\">\n",
       "      <!-- 6 -->\n",
       "      <g transform=\"translate(7.2 14.798437) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-36\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"line2d_29\">\n",
       "    <path d=\"M 32.091426 23.516454 \n",
       "L 32.419418 174.993912 \n",
       "L 32.74741 188.378476 \n",
       "L 33.075402 196.883937 \n",
       "L 33.403394 201.353687 \n",
       "L 33.731387 212.914092 \n",
       "L 34.059379 203.343817 \n",
       "L 34.387371 210.440244 \n",
       "L 34.715363 205.746197 \n",
       "L 35.043355 203.992304 \n",
       "L 35.371348 213.741496 \n",
       "L 35.69934 212.823602 \n",
       "L 36.027332 215.785698 \n",
       "L 36.355324 212.785936 \n",
       "L 36.683316 214.328312 \n",
       "L 37.011309 219.335082 \n",
       "L 37.339301 215.820478 \n",
       "L 37.667293 220.922648 \n",
       "L 37.995285 216.477554 \n",
       "L 38.323277 222.695994 \n",
       "L 39.307254 215.978814 \n",
       "L 39.635246 215.626776 \n",
       "L 39.963238 217.767234 \n",
       "L 40.29123 218.192942 \n",
       "L 40.619223 224.023862 \n",
       "L 40.947215 222.085615 \n",
       "L 41.275207 225.598011 \n",
       "L 41.603199 220.640979 \n",
       "L 41.931191 219.407923 \n",
       "L 42.259184 228.351901 \n",
       "L 42.587176 222.59158 \n",
       "L 42.915168 225.936224 \n",
       "L 43.24316 220.303352 \n",
       "L 43.571152 229.855703 \n",
       "L 43.899145 222.710688 \n",
       "L 44.227137 231.680241 \n",
       "L 44.883121 225.54871 \n",
       "L 45.211113 227.680453 \n",
       "L 45.539106 225.405562 \n",
       "L 45.867098 231.504527 \n",
       "L 46.19509 225.001417 \n",
       "L 46.523082 223.896017 \n",
       "L 46.851074 232.262711 \n",
       "L 47.835051 228.964873 \n",
       "L 48.163043 221.113999 \n",
       "L 48.491035 236.073895 \n",
       "L 48.819028 229.667916 \n",
       "L 49.14702 231.429092 \n",
       "L 49.475012 223.887153 \n",
       "L 49.803004 227.336664 \n",
       "L 50.130996 232.947093 \n",
       "L 50.458988 228.122338 \n",
       "L 50.786981 233.051041 \n",
       "L 51.114973 230.179303 \n",
       "L 51.442965 234.191462 \n",
       "L 51.770957 230.974796 \n",
       "L 52.098949 229.845079 \n",
       "L 52.426942 230.866663 \n",
       "L 52.754934 229.474236 \n",
       "L 53.082926 233.955213 \n",
       "L 53.410918 234.308442 \n",
       "L 53.73891 232.92565 \n",
       "L 54.066903 230.308562 \n",
       "L 54.394895 232.65019 \n",
       "L 54.722887 231.265846 \n",
       "L 55.378871 241.803162 \n",
       "L 55.706864 241.603072 \n",
       "L 56.034856 234.297381 \n",
       "L 56.362848 236.194658 \n",
       "L 56.69084 226.982814 \n",
       "L 57.018832 239.834911 \n",
       "L 57.346825 242.742148 \n",
       "L 57.674817 232.892526 \n",
       "L 58.002809 241.17887 \n",
       "L 58.330801 226.973369 \n",
       "L 58.658793 234.238727 \n",
       "L 58.986786 222.027012 \n",
       "L 59.314778 244.185157 \n",
       "L 59.64277 239.860838 \n",
       "L 59.970762 230.180849 \n",
       "L 60.298754 241.166229 \n",
       "L 60.626746 230.85482 \n",
       "L 60.954739 238.415104 \n",
       "L 61.282731 240.651031 \n",
       "L 61.610723 239.901539 \n",
       "L 61.938715 234.234669 \n",
       "L 62.266707 239.839614 \n",
       "L 62.5947 239.46358 \n",
       "L 62.922692 235.478888 \n",
       "L 63.250684 228.414959 \n",
       "L 63.578676 237.929517 \n",
       "L 63.906668 239.625141 \n",
       "L 64.234661 237.057325 \n",
       "L 64.562653 237.020804 \n",
       "L 64.890645 236.352115 \n",
       "L 65.218637 232.621475 \n",
       "L 65.546629 230.451135 \n",
       "L 65.874622 234.417782 \n",
       "L 66.202614 233.054364 \n",
       "L 66.530606 230.008273 \n",
       "L 67.18659 242.2941 \n",
       "L 67.514583 239.007956 \n",
       "L 67.842575 232.171807 \n",
       "L 68.170567 239.777183 \n",
       "L 68.498559 239.750216 \n",
       "L 68.826551 238.685068 \n",
       "L 69.154544 228.644458 \n",
       "L 69.482536 245.669143 \n",
       "L 69.810528 243.19403 \n",
       "L 70.13852 239.613742 \n",
       "L 70.466512 240.705908 \n",
       "L 70.794505 235.824115 \n",
       "L 71.122497 247.705015 \n",
       "L 71.450489 236.625575 \n",
       "L 71.778481 245.796442 \n",
       "L 72.106473 237.855451 \n",
       "L 72.434465 239.675218 \n",
       "L 72.762458 237.062355 \n",
       "L 73.746434 245.270419 \n",
       "L 74.074426 241.805099 \n",
       "L 74.402419 236.649869 \n",
       "L 74.730411 241.566637 \n",
       "L 75.058403 236.059254 \n",
       "L 75.386395 242.632773 \n",
       "L 75.714387 244.432161 \n",
       "L 76.04238 240.534102 \n",
       "L 76.370372 232.603787 \n",
       "L 76.698364 244.823952 \n",
       "L 77.026356 241.084994 \n",
       "L 77.354348 242.734554 \n",
       "L 77.682341 237.344472 \n",
       "L 78.010333 245.058654 \n",
       "L 78.338325 249.288471 \n",
       "L 78.666317 241.693172 \n",
       "L 78.994309 231.119927 \n",
       "L 79.322302 242.725919 \n",
       "L 79.650294 240.629548 \n",
       "L 79.978286 245.490462 \n",
       "L 80.306278 246.183473 \n",
       "L 80.63427 242.931723 \n",
       "L 80.962263 248.15143 \n",
       "L 81.290255 245.690511 \n",
       "L 81.618247 236.811465 \n",
       "L 81.946239 235.52835 \n",
       "L 82.274231 242.286069 \n",
       "L 82.602223 240.297865 \n",
       "L 82.930216 243.680054 \n",
       "L 83.258208 242.635308 \n",
       "L 83.5862 244.916133 \n",
       "L 83.914192 240.503203 \n",
       "L 84.242184 245.578681 \n",
       "L 84.570177 246.19424 \n",
       "L 84.898169 248.88985 \n",
       "L 85.226161 243.023725 \n",
       "L 85.554153 242.965675 \n",
       "L 85.882145 249.682262 \n",
       "L 86.210138 247.153566 \n",
       "L 86.53813 250.995696 \n",
       "L 86.866122 234.237497 \n",
       "L 87.194114 249.867209 \n",
       "L 87.522106 238.859691 \n",
       "L 87.850099 244.58948 \n",
       "L 88.178091 245.349257 \n",
       "L 88.506083 237.696241 \n",
       "L 88.834075 249.396207 \n",
       "L 89.162067 249.874108 \n",
       "L 89.49006 251.91939 \n",
       "L 89.818052 237.426351 \n",
       "L 90.146044 249.037787 \n",
       "L 90.474036 251.6442 \n",
       "L 91.130021 245.788049 \n",
       "L 91.458013 254.333527 \n",
       "L 91.786005 250.805557 \n",
       "L 92.113997 239.489829 \n",
       "L 92.441989 251.402037 \n",
       "L 92.769982 253.520371 \n",
       "L 93.097974 244.870982 \n",
       "L 93.753958 250.114438 \n",
       "L 94.08195 249.123684 \n",
       "L 94.409942 240.689961 \n",
       "L 94.737935 245.641601 \n",
       "L 95.065927 248.138237 \n",
       "L 95.393919 247.494774 \n",
       "L 95.721911 242.567503 \n",
       "L 96.049903 240.077115 \n",
       "L 96.705888 244.196913 \n",
       "L 97.03388 246.365638 \n",
       "L 97.689864 242.991107 \n",
       "L 98.017857 242.893051 \n",
       "L 98.345849 240.141478 \n",
       "L 98.673841 243.510427 \n",
       "L 99.001833 251.119597 \n",
       "L 99.329825 251.220366 \n",
       "L 99.657818 250.996362 \n",
       "L 99.98581 254.446015 \n",
       "L 100.313802 249.34759 \n",
       "L 100.641794 248.22856 \n",
       "L 100.969786 245.809929 \n",
       "L 101.297779 242.263937 \n",
       "L 101.625771 248.9573 \n",
       "L 101.953763 248.397854 \n",
       "L 102.281755 248.861371 \n",
       "L 102.609747 245.670482 \n",
       "L 102.93774 245.573864 \n",
       "L 103.265732 249.297778 \n",
       "L 103.593724 248.721057 \n",
       "L 103.921716 246.257832 \n",
       "L 104.249708 253.982434 \n",
       "L 104.5777 252.552178 \n",
       "L 104.905693 246.530246 \n",
       "L 105.233685 245.585195 \n",
       "L 105.561677 248.137628 \n",
       "L 106.217661 245.733511 \n",
       "L 106.545654 255.658236 \n",
       "L 107.201638 234.232042 \n",
       "L 107.52963 243.07202 \n",
       "L 108.513607 251.249966 \n",
       "L 108.841599 238.414667 \n",
       "L 109.169591 257.719397 \n",
       "L 109.497583 255.527586 \n",
       "L 109.825576 246.771588 \n",
       "L 110.153568 250.92597 \n",
       "L 110.48156 249.732299 \n",
       "L 110.809552 247.366371 \n",
       "L 111.137544 253.926597 \n",
       "L 111.465537 250.694872 \n",
       "L 111.793529 241.435969 \n",
       "L 112.121521 248.244001 \n",
       "L 112.449513 252.108367 \n",
       "L 112.777505 254.155406 \n",
       "L 113.105498 249.265689 \n",
       "L 113.43349 255.393891 \n",
       "L 113.761482 247.538274 \n",
       "L 114.089474 250.080118 \n",
       "L 114.417466 253.926324 \n",
       "L 114.745459 253.789962 \n",
       "L 115.073451 257.920343 \n",
       "L 115.401443 251.049515 \n",
       "L 115.729435 251.064921 \n",
       "L 116.057427 260.1599 \n",
       "L 116.385419 257.609979 \n",
       "L 116.713412 251.727625 \n",
       "L 117.041404 255.750414 \n",
       "L 117.369396 249.298997 \n",
       "L 117.697388 257.371012 \n",
       "L 118.02538 256.358563 \n",
       "L 118.353373 249.472096 \n",
       "L 118.681365 251.560747 \n",
       "L 119.009357 254.617929 \n",
       "L 119.337349 254.842867 \n",
       "L 119.665341 248.861176 \n",
       "L 119.993334 259.22501 \n",
       "L 120.321326 252.889382 \n",
       "L 120.649318 250.691837 \n",
       "L 120.97731 251.036057 \n",
       "L 121.305302 256.140641 \n",
       "L 121.633295 255.066224 \n",
       "L 121.961287 256.816041 \n",
       "L 122.289279 251.096936 \n",
       "L 122.617271 252.652829 \n",
       "L 122.945263 255.495327 \n",
       "L 123.273256 248.482043 \n",
       "L 124.257232 260.492043 \n",
       "L 124.585224 252.777096 \n",
       "L 125.241209 249.739531 \n",
       "L 125.569201 253.50898 \n",
       "L 125.897193 246.903428 \n",
       "L 126.225185 244.322781 \n",
       "L 126.553177 258.191299 \n",
       "L 126.88117 254.671585 \n",
       "L 127.209162 260.68187 \n",
       "L 127.537154 258.884345 \n",
       "L 127.865146 261.671382 \n",
       "L 128.193138 254.996829 \n",
       "L 128.849123 256.50969 \n",
       "L 129.177115 251.396345 \n",
       "L 129.505107 242.506653 \n",
       "L 129.833099 257.90191 \n",
       "L 130.161092 255.244189 \n",
       "L 130.489084 247.3497 \n",
       "L 130.817076 252.296508 \n",
       "L 131.47306 257.111852 \n",
       "L 131.801053 255.524053 \n",
       "L 132.129045 257.999267 \n",
       "L 132.457037 254.310863 \n",
       "L 132.785029 256.532087 \n",
       "L 133.113021 257.116744 \n",
       "L 133.769006 254.627624 \n",
       "L 134.096998 255.511734 \n",
       "L 134.42499 253.524154 \n",
       "L 134.752982 253.197903 \n",
       "L 135.080975 255.917945 \n",
       "L 135.408967 260.02449 \n",
       "L 135.736959 257.949529 \n",
       "L 136.064951 254.39302 \n",
       "L 136.392943 262.402159 \n",
       "L 136.720936 253.181822 \n",
       "L 137.048928 256.405067 \n",
       "L 137.37692 255.816185 \n",
       "L 137.704912 257.925344 \n",
       "L 138.032904 258.090993 \n",
       "L 138.360896 253.787429 \n",
       "L 138.688889 260.787574 \n",
       "L 139.016881 246.959271 \n",
       "L 139.672865 260.588034 \n",
       "L 140.32885 250.402263 \n",
       "L 140.656842 260.57658 \n",
       "L 140.984834 258.841031 \n",
       "L 141.312826 262.156221 \n",
       "L 141.640818 253.660518 \n",
       "L 141.968811 256.223032 \n",
       "L 142.296803 255.413236 \n",
       "L 142.624795 249.952577 \n",
       "L 142.952787 255.801802 \n",
       "L 143.280779 251.010671 \n",
       "L 143.608772 256.256702 \n",
       "L 143.936764 254.456497 \n",
       "L 144.264756 254.712849 \n",
       "L 144.592748 259.215746 \n",
       "L 144.92074 258.540492 \n",
       "L 145.248733 259.768026 \n",
       "L 145.904717 253.778105 \n",
       "L 146.232709 253.135021 \n",
       "L 146.560701 251.432223 \n",
       "L 147.544678 256.747813 \n",
       "L 147.87267 257.075147 \n",
       "L 148.528654 262.163965 \n",
       "L 148.856647 256.350109 \n",
       "L 149.184639 257.185159 \n",
       "L 149.512631 257.193642 \n",
       "L 149.840623 262.718783 \n",
       "L 150.168615 250.566636 \n",
       "L 150.496608 252.998953 \n",
       "L 150.8246 256.502263 \n",
       "L 151.152592 258.507403 \n",
       "L 151.480584 257.90932 \n",
       "L 151.808576 251.216313 \n",
       "L 152.136569 259.085331 \n",
       "L 152.464561 255.424348 \n",
       "L 152.792553 255.463034 \n",
       "L 153.120545 262.688424 \n",
       "L 153.448537 261.703227 \n",
       "L 153.77653 252.016733 \n",
       "L 154.432514 261.709062 \n",
       "L 154.760506 260.086492 \n",
       "L 155.088498 248.418785 \n",
       "L 155.416491 259.022926 \n",
       "L 155.744483 258.276225 \n",
       "L 156.072475 258.929794 \n",
       "L 156.400467 247.020489 \n",
       "L 156.728459 267.37609 \n",
       "L 157.056452 257.441905 \n",
       "L 157.384444 259.5689 \n",
       "L 158.040428 255.465603 \n",
       "L 158.36842 259.35397 \n",
       "L 158.696413 258.967902 \n",
       "L 159.024405 256.31802 \n",
       "L 159.352397 260.798822 \n",
       "L 159.680389 260.029152 \n",
       "L 160.008381 262.077093 \n",
       "L 160.336373 255.119538 \n",
       "L 160.992358 261.491123 \n",
       "L 161.32035 255.846009 \n",
       "L 161.648342 260.42745 \n",
       "L 161.976334 262.351594 \n",
       "L 162.304327 255.91585 \n",
       "L 162.632319 261.878275 \n",
       "L 162.960311 257.26049 \n",
       "L 163.288303 260.484908 \n",
       "L 163.616295 261.639994 \n",
       "L 163.944288 255.221839 \n",
       "L 164.27228 260.265236 \n",
       "L 164.600272 258.412141 \n",
       "L 164.928264 262.713874 \n",
       "L 165.584249 258.44329 \n",
       "L 165.912241 272.777956 \n",
       "L 166.240233 264.204697 \n",
       "L 166.568225 259.353335 \n",
       "L 166.896217 265.841446 \n",
       "L 167.22421 260.408281 \n",
       "L 167.552202 257.115195 \n",
       "L 167.880194 262.488165 \n",
       "L 168.208186 265.214453 \n",
       "L 168.536178 253.070909 \n",
       "L 168.864171 252.959042 \n",
       "L 169.192163 267.194112 \n",
       "L 169.520155 251.647454 \n",
       "L 169.848147 249.57325 \n",
       "L 170.176139 267.885841 \n",
       "L 170.504131 255.712087 \n",
       "L 170.832124 263.231702 \n",
       "L 171.160116 256.827475 \n",
       "L 171.488108 256.154797 \n",
       "L 171.8161 261.010173 \n",
       "L 172.144092 254.275554 \n",
       "L 172.472085 262.313552 \n",
       "L 172.800077 255.232928 \n",
       "L 173.128069 263.140893 \n",
       "L 173.456061 256.451338 \n",
       "L 173.784053 255.724872 \n",
       "L 174.112046 264.133655 \n",
       "L 174.440038 264.792091 \n",
       "L 174.76803 260.786899 \n",
       "L 175.096022 253.560123 \n",
       "L 175.424014 269.998746 \n",
       "L 175.752007 253.787366 \n",
       "L 176.079999 265.436028 \n",
       "L 176.407991 259.784228 \n",
       "L 176.735983 264.147823 \n",
       "L 177.063975 257.313352 \n",
       "L 177.391968 261.335293 \n",
       "L 177.71996 273.557267 \n",
       "L 178.047952 259.487785 \n",
       "L 178.375944 257.53798 \n",
       "L 179.031929 263.867792 \n",
       "L 179.359921 254.280564 \n",
       "L 179.687913 255.660277 \n",
       "L 180.015905 263.40065 \n",
       "L 180.343897 263.409503 \n",
       "L 180.67189 254.732599 \n",
       "L 180.999882 261.624766 \n",
       "L 181.327874 261.861779 \n",
       "L 181.655866 270.979103 \n",
       "L 181.983858 259.7723 \n",
       "L 182.31185 260.43601 \n",
       "L 182.639843 260.450169 \n",
       "L 182.967835 262.907567 \n",
       "L 183.295827 266.643217 \n",
       "L 183.951811 248.512075 \n",
       "L 184.279804 266.275835 \n",
       "L 184.607796 266.240035 \n",
       "L 184.935788 256.915178 \n",
       "L 185.26378 263.688965 \n",
       "L 185.591772 248.8657 \n",
       "L 185.919765 257.483704 \n",
       "L 186.247757 262.274368 \n",
       "L 186.575749 262.438203 \n",
       "L 187.231733 264.798615 \n",
       "L 187.559726 255.517235 \n",
       "L 187.887718 259.613032 \n",
       "L 188.21571 257.469223 \n",
       "L 188.543702 267.717556 \n",
       "L 188.871694 257.096908 \n",
       "L 189.199687 260.982636 \n",
       "L 189.527679 266.392272 \n",
       "L 189.855671 263.856447 \n",
       "L 190.183663 264.055746 \n",
       "L 190.511655 249.840144 \n",
       "L 190.839648 268.169559 \n",
       "L 191.16764 253.194058 \n",
       "L 191.495632 262.869856 \n",
       "L 191.823624 262.249186 \n",
       "L 192.151616 264.533606 \n",
       "L 192.479608 265.308686 \n",
       "L 192.807601 263.017948 \n",
       "L 193.135593 265.797489 \n",
       "L 193.463585 264.904389 \n",
       "L 193.791577 258.095448 \n",
       "L 194.119569 261.104316 \n",
       "L 194.447562 272.747577 \n",
       "L 194.775554 264.785658 \n",
       "L 195.103546 264.216879 \n",
       "L 195.431538 262.864412 \n",
       "L 195.75953 266.222631 \n",
       "L 196.087523 260.711306 \n",
       "L 196.415515 262.651405 \n",
       "L 196.743507 262.348176 \n",
       "L 197.071499 262.539044 \n",
       "L 197.399491 265.907844 \n",
       "L 197.727484 268.010996 \n",
       "L 198.055476 265.782663 \n",
       "L 198.383468 259.488858 \n",
       "L 198.71146 266.631559 \n",
       "L 199.367445 256.877512 \n",
       "L 199.695437 264.860049 \n",
       "L 200.023429 260.402498 \n",
       "L 200.351421 266.246068 \n",
       "L 200.679413 257.570808 \n",
       "L 201.007406 271.278052 \n",
       "L 201.335398 268.665384 \n",
       "L 201.66339 264.238408 \n",
       "L 201.991382 266.538858 \n",
       "L 202.319374 260.180064 \n",
       "L 202.647367 261.835027 \n",
       "L 202.975359 254.525019 \n",
       "L 203.303351 267.283294 \n",
       "L 203.631343 265.177 \n",
       "L 203.959335 264.871736 \n",
       "L 204.287327 259.777238 \n",
       "L 204.61532 258.179299 \n",
       "L 204.943312 260.321815 \n",
       "L 205.271304 268.296789 \n",
       "L 205.599296 265.1054 \n",
       "L 205.927288 259.382742 \n",
       "L 206.255281 257.659772 \n",
       "L 206.583273 268.04372 \n",
       "L 206.911265 266.659607 \n",
       "L 207.239257 258.743099 \n",
       "L 207.567249 267.727211 \n",
       "L 207.895242 259.694428 \n",
       "L 208.223234 264.734403 \n",
       "L 208.551226 267.982531 \n",
       "L 208.879218 259.29206 \n",
       "L 209.20721 255.974596 \n",
       "L 209.535203 269.250455 \n",
       "L 209.863195 268.913262 \n",
       "L 210.519179 259.602547 \n",
       "L 210.847171 264.95183 \n",
       "L 211.503156 260.987523 \n",
       "L 211.831148 257.858099 \n",
       "L 212.15914 272.596668 \n",
       "L 212.487132 261.686122 \n",
       "L 212.815125 269.084237 \n",
       "L 213.143117 265.389248 \n",
       "L 213.471109 263.307731 \n",
       "L 213.799101 263.759254 \n",
       "L 214.127093 260.16754 \n",
       "L 214.455085 263.851176 \n",
       "L 214.783078 261.847896 \n",
       "L 215.11107 256.216429 \n",
       "L 215.439062 263.566535 \n",
       "L 215.767054 262.885274 \n",
       "L 216.095046 266.648468 \n",
       "L 216.423039 268.149646 \n",
       "L 216.751031 255.523815 \n",
       "L 217.079023 271.277035 \n",
       "L 217.407015 268.559893 \n",
       "L 218.063 261.433797 \n",
       "L 218.390992 265.533322 \n",
       "L 218.718984 271.906422 \n",
       "L 219.046976 263.278082 \n",
       "L 219.374968 258.181549 \n",
       "L 219.702961 257.486773 \n",
       "L 220.030953 265.504961 \n",
       "L 220.358945 264.875987 \n",
       "L 221.014929 268.006707 \n",
       "L 221.342922 262.329001 \n",
       "L 221.670914 266.668738 \n",
       "L 221.998906 263.055389 \n",
       "L 222.326898 262.108277 \n",
       "L 222.65489 273.436797 \n",
       "L 222.982883 265.700253 \n",
       "L 223.310875 267.015313 \n",
       "L 223.638867 266.520172 \n",
       "L 223.966859 260.172559 \n",
       "L 224.294851 269.957384 \n",
       "L 224.622844 264.160447 \n",
       "L 224.950836 268.90981 \n",
       "L 225.278828 264.874343 \n",
       "L 225.934812 259.448398 \n",
       "L 226.262804 268.509629 \n",
       "L 226.590797 260.987132 \n",
       "L 226.918789 263.121729 \n",
       "L 227.246781 263.308036 \n",
       "L 227.574773 265.929979 \n",
       "L 227.902765 271.614411 \n",
       "L 228.230758 261.523287 \n",
       "L 228.55875 265.992723 \n",
       "L 228.886742 266.431452 \n",
       "L 229.214734 266.555828 \n",
       "L 229.542726 262.750047 \n",
       "L 229.870719 265.780157 \n",
       "L 230.198711 274.354435 \n",
       "L 230.526703 262.691267 \n",
       "L 230.854695 258.682859 \n",
       "L 231.51068 261.893287 \n",
       "L 231.838672 268.358053 \n",
       "L 232.166664 272.426435 \n",
       "L 232.494656 254.797665 \n",
       "L 232.822648 268.981735 \n",
       "L 233.150641 263.95018 \n",
       "L 233.478633 261.745494 \n",
       "L 233.806625 266.642823 \n",
       "L 234.462609 261.52805 \n",
       "L 235.118594 268.013218 \n",
       "L 235.446586 260.406128 \n",
       "L 235.774578 269.978872 \n",
       "L 236.10257 263.15162 \n",
       "L 236.430562 261.950268 \n",
       "L 236.758555 268.110178 \n",
       "L 237.086547 267.531468 \n",
       "L 237.414539 274.163941 \n",
       "L 237.742531 263.851638 \n",
       "L 238.070523 271.477816 \n",
       "L 238.398516 266.589386 \n",
       "L 238.726508 273.07654 \n",
       "L 239.0545 265.884119 \n",
       "L 239.382492 275.516454 \n",
       "L 239.710484 267.65591 \n",
       "L 240.038477 268.346648 \n",
       "L 240.366469 261.837171 \n",
       "L 240.694461 267.088284 \n",
       "L 241.022453 274.697222 \n",
       "L 241.350445 254.319354 \n",
       "L 241.678438 268.652174 \n",
       "L 242.00643 268.838437 \n",
       "L 242.334422 260.165422 \n",
       "L 242.662414 264.649325 \n",
       "L 242.990406 266.236178 \n",
       "L 243.318399 265.579205 \n",
       "L 243.646391 266.565161 \n",
       "L 243.974383 268.255844 \n",
       "L 244.302375 273.578804 \n",
       "L 244.630367 273.163659 \n",
       "L 244.95836 265.674869 \n",
       "L 245.286352 272.91042 \n",
       "L 245.614344 259.454523 \n",
       "L 245.942336 271.074206 \n",
       "L 246.270328 264.433383 \n",
       "L 246.598321 263.799745 \n",
       "L 246.926313 264.690347 \n",
       "L 247.254305 271.678483 \n",
       "L 247.582297 270.565317 \n",
       "L 247.910289 268.332434 \n",
       "L 248.238281 258.58841 \n",
       "L 248.566274 271.077046 \n",
       "L 249.222258 262.706857 \n",
       "L 249.55025 266.211398 \n",
       "L 249.878242 255.870636 \n",
       "L 250.206235 268.294628 \n",
       "L 250.534227 274.606789 \n",
       "L 250.862219 273.291214 \n",
       "L 251.190211 263.266619 \n",
       "L 251.518203 268.880403 \n",
       "L 251.846196 263.769205 \n",
       "L 252.174188 266.512946 \n",
       "L 252.50218 266.037181 \n",
       "L 252.830172 264.499654 \n",
       "L 253.158164 271.646153 \n",
       "L 253.486157 266.488994 \n",
       "L 253.814149 272.537767 \n",
       "L 254.142141 267.918611 \n",
       "L 254.470133 268.359384 \n",
       "L 254.798125 264.237669 \n",
       "L 255.126118 257.486638 \n",
       "L 255.45411 265.055404 \n",
       "L 255.782102 263.679459 \n",
       "L 256.110094 264.000504 \n",
       "L 256.438086 270.138505 \n",
       "L 256.766079 256.778471 \n",
       "L 257.094071 270.422476 \n",
       "L 257.422063 261.334629 \n",
       "L 257.750055 267.889532 \n",
       "L 258.078047 266.384664 \n",
       "L 258.406039 271.835267 \n",
       "L 258.734032 270.498325 \n",
       "L 259.062024 266.247572 \n",
       "L 259.390016 257.678806 \n",
       "L 259.718008 260.2577 \n",
       "L 260.046 270.352477 \n",
       "L 260.373993 268.611125 \n",
       "L 260.701985 264.947096 \n",
       "L 261.029977 267.346168 \n",
       "L 261.357969 261.461014 \n",
       "L 261.685961 261.41944 \n",
       "L 262.013954 274.5609 \n",
       "L 262.341946 254.029228 \n",
       "L 262.669938 265.615149 \n",
       "L 262.669938 265.615149 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"line2d_30\">\n",
       "    <path d=\"M 32.091426 95.846466 \n",
       "L 43.636751 229.865691 \n",
       "L 55.182076 237.178659 \n",
       "L 66.727401 241.543305 \n",
       "L 78.272727 245.22685 \n",
       "L 89.818052 248.910916 \n",
       "L 101.363377 253.287922 \n",
       "L 112.908702 254.908968 \n",
       "L 124.454027 256.883151 \n",
       "L 135.999353 257.856161 \n",
       "L 147.544678 260.693099 \n",
       "L 159.090003 262.076165 \n",
       "L 170.635328 264.108188 \n",
       "L 182.180654 264.569791 \n",
       "L 193.725979 262.029262 \n",
       "L 205.271304 265.714366 \n",
       "L 216.816629 265.398768 \n",
       "L 228.361955 267.263658 \n",
       "L 239.90728 268.516298 \n",
       "L 251.452605 269.868631 \n",
       "\" clip-path=\"url(#p477d2a8414)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 20.5625 288.116454 \n",
       "L 20.5625 10.916454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 274.198864 288.116454 \n",
       "L 274.198864 10.916454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 20.5625 288.116454 \n",
       "L 274.198864 288.116454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_6\">\n",
       "    <path d=\"M 20.5625 10.916454 \n",
       "L 274.198864 10.916454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"legend_1\">\n",
       "    <g id=\"patch_7\">\n",
       "     <path d=\"M 187.608239 48.828954 \n",
       "L 267.198864 48.828954 \n",
       "Q 269.198864 48.828954 269.198864 46.828954 \n",
       "L 269.198864 17.916454 \n",
       "Q 269.198864 15.916454 267.198864 15.916454 \n",
       "L 187.608239 15.916454 \n",
       "Q 185.608239 15.916454 185.608239 17.916454 \n",
       "L 185.608239 46.828954 \n",
       "Q 185.608239 48.828954 187.608239 48.828954 \n",
       "z\n",
       "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n",
       "    </g>\n",
       "    <g id=\"line2d_31\">\n",
       "     <path d=\"M 189.608239 24.014892 \n",
       "L 199.608239 24.014892 \n",
       "L 209.608239 24.014892 \n",
       "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_16\">\n",
       "     <!-- train_loss -->\n",
       "     <g transform=\"translate(217.608239 27.514892) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \n",
       "Q 2534 3019 2420 3045 \n",
       "Q 2306 3072 2169 3072 \n",
       "Q 1681 3072 1420 2755 \n",
       "Q 1159 2438 1159 1844 \n",
       "L 1159 0 \n",
       "L 581 0 \n",
       "L 581 3500 \n",
       "L 1159 3500 \n",
       "L 1159 2956 \n",
       "Q 1341 3275 1631 3429 \n",
       "Q 1922 3584 2338 3584 \n",
       "Q 2397 3584 2469 3576 \n",
       "Q 2541 3569 2628 3553 \n",
       "L 2631 2963 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \n",
       "Q 1497 1759 1228 1600 \n",
       "Q 959 1441 959 1056 \n",
       "Q 959 750 1161 570 \n",
       "Q 1363 391 1709 391 \n",
       "Q 2188 391 2477 730 \n",
       "Q 2766 1069 2766 1631 \n",
       "L 2766 1759 \n",
       "L 2194 1759 \n",
       "z\n",
       "M 3341 1997 \n",
       "L 3341 0 \n",
       "L 2766 0 \n",
       "L 2766 531 \n",
       "Q 2569 213 2275 61 \n",
       "Q 1981 -91 1556 -91 \n",
       "Q 1019 -91 701 211 \n",
       "Q 384 513 384 1019 \n",
       "Q 384 1609 779 1909 \n",
       "Q 1175 2209 1959 2209 \n",
       "L 2766 2209 \n",
       "L 2766 2266 \n",
       "Q 2766 2663 2505 2880 \n",
       "Q 2244 3097 1772 3097 \n",
       "Q 1472 3097 1187 3025 \n",
       "Q 903 2953 641 2809 \n",
       "L 641 3341 \n",
       "Q 956 3463 1253 3523 \n",
       "Q 1550 3584 1831 3584 \n",
       "Q 2591 3584 2966 3190 \n",
       "Q 3341 2797 3341 1997 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-69\" d=\"M 603 3500 \n",
       "L 1178 3500 \n",
       "L 1178 0 \n",
       "L 603 0 \n",
       "L 603 3500 \n",
       "z\n",
       "M 603 4863 \n",
       "L 1178 4863 \n",
       "L 1178 4134 \n",
       "L 603 4134 \n",
       "L 603 4863 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \n",
       "L 3513 0 \n",
       "L 2938 0 \n",
       "L 2938 2094 \n",
       "Q 2938 2591 2744 2837 \n",
       "Q 2550 3084 2163 3084 \n",
       "Q 1697 3084 1428 2787 \n",
       "Q 1159 2491 1159 1978 \n",
       "L 1159 0 \n",
       "L 581 0 \n",
       "L 581 3500 \n",
       "L 1159 3500 \n",
       "L 1159 2956 \n",
       "Q 1366 3272 1645 3428 \n",
       "Q 1925 3584 2291 3584 \n",
       "Q 2894 3584 3203 3211 \n",
       "Q 3513 2838 3513 2113 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-5f\" d=\"M 3263 -1063 \n",
       "L 3263 -1509 \n",
       "L -63 -1509 \n",
       "L -63 -1063 \n",
       "L 3263 -1063 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-6c\" d=\"M 603 4863 \n",
       "L 1178 4863 \n",
       "L 1178 0 \n",
       "L 603 0 \n",
       "L 603 4863 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       <path id=\"DejaVuSans-6f\" d=\"M 1959 3097 \n",
       "Q 1497 3097 1228 2736 \n",
       "Q 959 2375 959 1747 \n",
       "Q 959 1119 1226 758 \n",
       "Q 1494 397 1959 397 \n",
       "Q 2419 397 2687 759 \n",
       "Q 2956 1122 2956 1747 \n",
       "Q 2956 2369 2687 2733 \n",
       "Q 2419 3097 1959 3097 \n",
       "z\n",
       "M 1959 3584 \n",
       "Q 2709 3584 3137 3096 \n",
       "Q 3566 2609 3566 1747 \n",
       "Q 3566 888 3137 398 \n",
       "Q 2709 -91 1959 -91 \n",
       "Q 1206 -91 779 398 \n",
       "Q 353 888 353 1747 \n",
       "Q 353 2609 779 3096 \n",
       "Q 1206 3584 1959 3584 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-74\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"80.322266\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-69\" x=\"141.601562\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6e\" x=\"169.384766\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"232.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"282.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6f\" x=\"310.546875\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"371.728516\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"423.828125\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"line2d_32\">\n",
       "     <path d=\"M 189.608239 38.971142 \n",
       "L 199.608239 38.971142 \n",
       "L 209.608239 38.971142 \n",
       "\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_17\">\n",
       "     <!-- val_loss -->\n",
       "     <g transform=\"translate(217.608239 42.471142) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-76\" d=\"M 191 3500 \n",
       "L 800 3500 \n",
       "L 1894 563 \n",
       "L 2988 3500 \n",
       "L 3597 3500 \n",
       "L 2284 0 \n",
       "L 1503 0 \n",
       "L 191 3500 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-76\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"59.179688\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"120.458984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"148.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"198.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6f\" x=\"226.025391\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"287.207031\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-73\" x=\"339.306641\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_2\">\n",
       "   <g id=\"patch_8\">\n",
       "    <path d=\"M 324.926136 288.116454 \n",
       "L 578.5625 288.116454 \n",
       "L 578.5625 10.916454 \n",
       "L 324.926136 10.916454 \n",
       "z\n",
       "\" style=\"fill: #ffffff\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_3\">\n",
       "    <g id=\"xtick_9\">\n",
       "     <g id=\"line2d_33\">\n",
       "      <path d=\"M 336.455062 288.116454 \n",
       "L 336.455062 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_34\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"336.455062\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_18\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(333.273812 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_10\">\n",
       "     <g id=\"line2d_35\">\n",
       "      <path d=\"M 369.254281 288.116454 \n",
       "L 369.254281 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_36\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"369.254281\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_19\">\n",
       "      <!-- 1000 -->\n",
       "      <g transform=\"translate(356.529281 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-31\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_11\">\n",
       "     <g id=\"line2d_37\">\n",
       "      <path d=\"M 402.053501 288.116454 \n",
       "L 402.053501 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_38\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"402.053501\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_20\">\n",
       "      <!-- 2000 -->\n",
       "      <g transform=\"translate(389.328501 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-32\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_12\">\n",
       "     <g id=\"line2d_39\">\n",
       "      <path d=\"M 434.85272 288.116454 \n",
       "L 434.85272 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_40\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"434.85272\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_21\">\n",
       "      <!-- 3000 -->\n",
       "      <g transform=\"translate(422.12772 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-33\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_13\">\n",
       "     <g id=\"line2d_41\">\n",
       "      <path d=\"M 467.65194 288.116454 \n",
       "L 467.65194 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_42\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"467.65194\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_22\">\n",
       "      <!-- 4000 -->\n",
       "      <g transform=\"translate(454.92694 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-34\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_14\">\n",
       "     <g id=\"line2d_43\">\n",
       "      <path d=\"M 500.451159 288.116454 \n",
       "L 500.451159 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_44\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"500.451159\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_23\">\n",
       "      <!-- 5000 -->\n",
       "      <g transform=\"translate(487.726159 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-35\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_15\">\n",
       "     <g id=\"line2d_45\">\n",
       "      <path d=\"M 533.250378 288.116454 \n",
       "L 533.250378 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_46\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"533.250378\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_24\">\n",
       "      <!-- 6000 -->\n",
       "      <g transform=\"translate(520.525378 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-36\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_16\">\n",
       "     <g id=\"line2d_47\">\n",
       "      <path d=\"M 566.049598 288.116454 \n",
       "L 566.049598 10.916454 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_48\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#mfd8a3b0112\" x=\"566.049598\" y=\"288.116454\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_25\">\n",
       "      <!-- 7000 -->\n",
       "      <g transform=\"translate(553.324598 302.714892) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-37\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"text_26\">\n",
       "     <!-- step -->\n",
       "     <g transform=\"translate(440.928693 316.393017) scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-73\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-74\" x=\"52.099609\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-65\" x=\"91.308594\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-70\" x=\"152.832031\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_4\">\n",
       "    <g id=\"ytick_7\">\n",
       "     <g id=\"line2d_49\">\n",
       "      <path d=\"M 324.926136 261.045167 \n",
       "L 578.5625 261.045167 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_50\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"261.045167\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_27\">\n",
       "      <!-- 0.1 -->\n",
       "      <g transform=\"translate(302.023011 264.844386) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-2e\" d=\"M 684 794 \n",
       "L 1344 794 \n",
       "L 1344 0 \n",
       "L 684 0 \n",
       "L 684 794 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-31\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_8\">\n",
       "     <g id=\"line2d_51\">\n",
       "      <path d=\"M 324.926136 229.108533 \n",
       "L 578.5625 229.108533 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_52\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"229.108533\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_28\">\n",
       "      <!-- 0.2 -->\n",
       "      <g transform=\"translate(302.023011 232.907752) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_9\">\n",
       "     <g id=\"line2d_53\">\n",
       "      <path d=\"M 324.926136 197.1719 \n",
       "L 578.5625 197.1719 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_54\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"197.1719\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_29\">\n",
       "      <!-- 0.3 -->\n",
       "      <g transform=\"translate(302.023011 200.971118) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-33\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_10\">\n",
       "     <g id=\"line2d_55\">\n",
       "      <path d=\"M 324.926136 165.235266 \n",
       "L 578.5625 165.235266 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_56\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"165.235266\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_30\">\n",
       "      <!-- 0.4 -->\n",
       "      <g transform=\"translate(302.023011 169.034485) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-34\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_11\">\n",
       "     <g id=\"line2d_57\">\n",
       "      <path d=\"M 324.926136 133.298632 \n",
       "L 578.5625 133.298632 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_58\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"133.298632\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_31\">\n",
       "      <!-- 0.5 -->\n",
       "      <g transform=\"translate(302.023011 137.097851) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_12\">\n",
       "     <g id=\"line2d_59\">\n",
       "      <path d=\"M 324.926136 101.361999 \n",
       "L 578.5625 101.361999 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_60\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"101.361999\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_32\">\n",
       "      <!-- 0.6 -->\n",
       "      <g transform=\"translate(302.023011 105.161217) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-36\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_13\">\n",
       "     <g id=\"line2d_61\">\n",
       "      <path d=\"M 324.926136 69.425365 \n",
       "L 578.5625 69.425365 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_62\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"69.425365\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_33\">\n",
       "      <!-- 0.7 -->\n",
       "      <g transform=\"translate(302.023011 73.224584) scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-37\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"ytick_14\">\n",
       "     <g id=\"line2d_63\">\n",
       "      <path d=\"M 324.926136 37.488731 \n",
       "L 578.5625 37.488731 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n",
       "     </g>\n",
       "     <g id=\"line2d_64\">\n",
       "      <g>\n",
       "       <use xlink:href=\"#m2fc0d90a93\" x=\"324.926136\" y=\"37.488731\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_34\">\n",
       "      <!-- 0.8 -->\n",
       "      <g transform=\"translate(302.023011 41.28795) scale(0.1 -0.1)\">\n",
       "       <defs>\n",
       "        <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \n",
       "Q 1584 2216 1326 1975 \n",
       "Q 1069 1734 1069 1313 \n",
       "Q 1069 891 1326 650 \n",
       "Q 1584 409 2034 409 \n",
       "Q 2484 409 2743 651 \n",
       "Q 3003 894 3003 1313 \n",
       "Q 3003 1734 2745 1975 \n",
       "Q 2488 2216 2034 2216 \n",
       "z\n",
       "M 1403 2484 \n",
       "Q 997 2584 770 2862 \n",
       "Q 544 3141 544 3541 \n",
       "Q 544 4100 942 4425 \n",
       "Q 1341 4750 2034 4750 \n",
       "Q 2731 4750 3128 4425 \n",
       "Q 3525 4100 3525 3541 \n",
       "Q 3525 3141 3298 2862 \n",
       "Q 3072 2584 2669 2484 \n",
       "Q 3125 2378 3379 2068 \n",
       "Q 3634 1759 3634 1313 \n",
       "Q 3634 634 3220 271 \n",
       "Q 2806 -91 2034 -91 \n",
       "Q 1263 -91 848 271 \n",
       "Q 434 634 434 1313 \n",
       "Q 434 1759 690 2068 \n",
       "Q 947 2378 1403 2484 \n",
       "z\n",
       "M 1172 3481 \n",
       "Q 1172 3119 1398 2916 \n",
       "Q 1625 2713 2034 2713 \n",
       "Q 2441 2713 2670 2916 \n",
       "Q 2900 3119 2900 3481 \n",
       "Q 2900 3844 2670 4047 \n",
       "Q 2441 4250 2034 4250 \n",
       "Q 1625 4250 1398 4047 \n",
       "Q 1172 3844 1172 3481 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "       </defs>\n",
       "       <use xlink:href=\"#DejaVuSans-30\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n",
       "       <use xlink:href=\"#DejaVuSans-38\" x=\"95.410156\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"line2d_65\">\n",
       "    <path d=\"M 336.455062 275.516454 \n",
       "L 337.111046 243.08081 \n",
       "L 337.439039 240.585761 \n",
       "L 337.767031 208.150117 \n",
       "L 338.095023 195.67487 \n",
       "L 338.423015 213.140216 \n",
       "L 338.751007 185.694672 \n",
       "L 339.079 208.150117 \n",
       "L 339.734984 185.694672 \n",
       "L 340.062976 185.694672 \n",
       "L 340.390968 175.714474 \n",
       "L 340.718961 175.714474 \n",
       "L 341.046953 195.67487 \n",
       "L 341.374945 170.724375 \n",
       "L 341.702937 170.724375 \n",
       "L 342.030929 185.694672 \n",
       "L 342.358921 183.199622 \n",
       "L 342.686914 148.268929 \n",
       "L 343.014906 190.684771 \n",
       "L 343.342898 175.714474 \n",
       "L 343.67089 168.229325 \n",
       "L 343.998882 180.704573 \n",
       "L 344.326875 163.239226 \n",
       "L 344.654867 160.744177 \n",
       "L 344.982859 145.77388 \n",
       "L 345.310851 175.714474 \n",
       "L 345.638843 160.744177 \n",
       "L 345.966836 173.219424 \n",
       "L 346.294828 180.704573 \n",
       "L 346.62282 160.744177 \n",
       "L 346.950812 150.763979 \n",
       "L 347.278804 155.754078 \n",
       "L 347.606797 158.249127 \n",
       "L 347.934789 150.763979 \n",
       "L 348.918765 150.763979 \n",
       "L 349.57475 155.754078 \n",
       "L 349.902742 140.783781 \n",
       "L 350.230734 143.27883 \n",
       "L 350.558726 173.219424 \n",
       "L 350.886719 165.734276 \n",
       "L 351.214711 133.298632 \n",
       "L 351.542703 135.793682 \n",
       "L 351.870695 135.793682 \n",
       "L 352.198687 168.229325 \n",
       "L 352.526679 155.754078 \n",
       "L 352.854672 148.268929 \n",
       "L 353.182664 133.298632 \n",
       "L 353.510656 140.783781 \n",
       "L 353.838648 160.744177 \n",
       "L 354.494633 145.77388 \n",
       "L 354.822625 148.268929 \n",
       "L 355.478609 123.318434 \n",
       "L 355.806601 140.783781 \n",
       "L 356.134594 125.813484 \n",
       "L 356.462586 168.229325 \n",
       "L 357.11857 130.803583 \n",
       "L 357.446562 148.268929 \n",
       "L 357.774555 130.803583 \n",
       "L 358.102547 140.783781 \n",
       "L 358.758531 130.803583 \n",
       "L 359.086523 133.298632 \n",
       "L 359.414516 143.27883 \n",
       "L 359.742508 113.338236 \n",
       "L 360.0705 115.833286 \n",
       "L 360.726484 125.813484 \n",
       "L 361.054477 168.229325 \n",
       "L 361.382469 120.823385 \n",
       "L 361.710461 110.843187 \n",
       "L 362.038453 140.783781 \n",
       "L 362.366445 98.367939 \n",
       "L 362.694438 138.288731 \n",
       "L 363.02243 125.813484 \n",
       "L 363.350422 158.249127 \n",
       "L 363.678414 105.853088 \n",
       "L 364.006406 103.358038 \n",
       "L 364.334398 150.763979 \n",
       "L 364.662391 123.318434 \n",
       "L 364.990383 135.793682 \n",
       "L 365.646367 118.328335 \n",
       "L 365.974359 118.328335 \n",
       "L 366.302352 138.288731 \n",
       "L 366.630344 113.338236 \n",
       "L 366.958336 113.338236 \n",
       "L 367.286328 120.823385 \n",
       "L 367.61432 158.249127 \n",
       "L 367.942313 125.813484 \n",
       "L 368.598297 108.348137 \n",
       "L 369.254281 133.298632 \n",
       "L 369.582274 140.783781 \n",
       "L 369.910266 143.27883 \n",
       "L 370.238258 125.813484 \n",
       "L 370.56625 133.298632 \n",
       "L 370.894242 155.754078 \n",
       "L 371.222235 140.783781 \n",
       "L 371.550227 113.338236 \n",
       "L 371.878219 130.803583 \n",
       "L 372.206211 133.298632 \n",
       "L 372.534203 108.348137 \n",
       "L 372.862196 123.318434 \n",
       "L 373.190188 108.348137 \n",
       "L 373.51818 143.27883 \n",
       "L 373.846172 95.87289 \n",
       "L 374.174164 110.843187 \n",
       "L 374.502156 110.843187 \n",
       "L 374.830149 115.833286 \n",
       "L 375.158141 125.813484 \n",
       "L 375.486133 103.358038 \n",
       "L 375.814125 125.813484 \n",
       "L 376.142117 100.862989 \n",
       "L 376.47011 138.288731 \n",
       "L 376.798102 110.843187 \n",
       "L 377.126094 123.318434 \n",
       "L 377.454086 115.833286 \n",
       "L 377.782078 118.328335 \n",
       "L 378.110071 98.367939 \n",
       "L 378.438063 115.833286 \n",
       "L 379.094047 115.833286 \n",
       "L 379.422039 150.763979 \n",
       "L 379.750032 113.338236 \n",
       "L 380.406016 103.358038 \n",
       "L 380.734008 140.783781 \n",
       "L 381.062 105.853088 \n",
       "L 381.389993 115.833286 \n",
       "L 381.717985 103.358038 \n",
       "L 382.045977 115.833286 \n",
       "L 382.373969 110.843187 \n",
       "L 382.701961 85.892692 \n",
       "L 383.029954 123.318434 \n",
       "L 383.357946 135.793682 \n",
       "L 383.685938 113.338236 \n",
       "L 384.01393 108.348137 \n",
       "L 384.341922 115.833286 \n",
       "L 384.669915 88.387741 \n",
       "L 384.997907 110.843187 \n",
       "L 385.325899 83.397642 \n",
       "L 385.653891 108.348137 \n",
       "L 385.981883 108.348137 \n",
       "L 386.309875 135.793682 \n",
       "L 386.637868 123.318434 \n",
       "L 386.96586 115.833286 \n",
       "L 387.293852 115.833286 \n",
       "L 387.621844 95.87289 \n",
       "L 387.949836 108.348137 \n",
       "L 388.277829 110.843187 \n",
       "L 388.605821 110.843187 \n",
       "L 388.933813 95.87289 \n",
       "L 389.261805 93.37784 \n",
       "L 389.589797 95.87289 \n",
       "L 389.91779 115.833286 \n",
       "L 390.245782 100.862989 \n",
       "L 390.573774 95.87289 \n",
       "L 390.901766 95.87289 \n",
       "L 391.229758 110.843187 \n",
       "L 391.557751 83.397642 \n",
       "L 391.885743 123.318434 \n",
       "L 392.213735 100.862989 \n",
       "L 392.541727 108.348137 \n",
       "L 392.869719 110.843187 \n",
       "L 393.525704 88.387741 \n",
       "L 393.853696 75.912494 \n",
       "L 394.181688 128.308533 \n",
       "L 394.50968 100.862989 \n",
       "L 394.837673 85.892692 \n",
       "L 395.165665 98.367939 \n",
       "L 395.821649 85.892692 \n",
       "L 396.149641 98.367939 \n",
       "L 396.477633 123.318434 \n",
       "L 397.133618 80.902593 \n",
       "L 397.789602 93.37784 \n",
       "L 398.117594 95.87289 \n",
       "L 398.445587 105.853088 \n",
       "L 398.773579 88.387741 \n",
       "L 399.429563 98.367939 \n",
       "L 399.757555 108.348137 \n",
       "L 400.085548 98.367939 \n",
       "L 400.41354 115.833286 \n",
       "L 401.069524 85.892692 \n",
       "L 401.725509 113.338236 \n",
       "L 402.053501 105.853088 \n",
       "L 402.381493 123.318434 \n",
       "L 402.709485 115.833286 \n",
       "L 403.037477 98.367939 \n",
       "L 403.36547 93.37784 \n",
       "L 403.693462 90.882791 \n",
       "L 404.021454 103.358038 \n",
       "L 404.349446 80.902593 \n",
       "L 404.677438 103.358038 \n",
       "L 405.005431 90.882791 \n",
       "L 405.333423 105.853088 \n",
       "L 405.661415 108.348137 \n",
       "L 405.989407 93.37784 \n",
       "L 406.317399 70.922395 \n",
       "L 406.645392 100.862989 \n",
       "L 406.973384 98.367939 \n",
       "L 407.301376 85.892692 \n",
       "L 407.629368 90.882791 \n",
       "L 408.285352 85.892692 \n",
       "L 408.613345 93.37784 \n",
       "L 408.941337 90.882791 \n",
       "L 409.269329 105.853088 \n",
       "L 409.597321 108.348137 \n",
       "L 409.925313 100.862989 \n",
       "L 410.253306 103.358038 \n",
       "L 410.581298 95.87289 \n",
       "L 410.90929 68.427345 \n",
       "L 411.565274 130.803583 \n",
       "L 412.221259 90.882791 \n",
       "L 412.549251 90.882791 \n",
       "L 412.877243 88.387741 \n",
       "L 413.205235 123.318434 \n",
       "L 413.533228 65.932296 \n",
       "L 413.86122 70.922395 \n",
       "L 414.189212 98.367939 \n",
       "L 414.845196 80.902593 \n",
       "L 415.173189 108.348137 \n",
       "L 415.501181 85.892692 \n",
       "L 415.829173 80.902593 \n",
       "L 416.157165 120.823385 \n",
       "L 416.485157 85.892692 \n",
       "L 416.81315 88.387741 \n",
       "L 417.141142 83.397642 \n",
       "L 417.469134 105.853088 \n",
       "L 417.797126 85.892692 \n",
       "L 418.125118 98.367939 \n",
       "L 418.781103 103.358038 \n",
       "L 419.109095 80.902593 \n",
       "L 419.437087 75.912494 \n",
       "L 419.765079 90.882791 \n",
       "L 420.093071 73.417444 \n",
       "L 420.421064 65.932296 \n",
       "L 420.749056 73.417444 \n",
       "L 421.077048 73.417444 \n",
       "L 421.733032 93.37784 \n",
       "L 422.061025 73.417444 \n",
       "L 422.389017 90.882791 \n",
       "L 422.717009 95.87289 \n",
       "L 423.045001 83.397642 \n",
       "L 423.372993 75.912494 \n",
       "L 423.700986 78.407543 \n",
       "L 424.028978 95.87289 \n",
       "L 424.35697 73.417444 \n",
       "L 424.684962 78.407543 \n",
       "L 425.012954 90.882791 \n",
       "L 425.340947 95.87289 \n",
       "L 425.996931 73.417444 \n",
       "L 426.324923 78.407543 \n",
       "L 426.652915 90.882791 \n",
       "L 426.980908 78.407543 \n",
       "L 427.3089 80.902593 \n",
       "L 427.636892 115.833286 \n",
       "L 428.292876 63.437246 \n",
       "L 428.948861 90.882791 \n",
       "L 429.276853 88.387741 \n",
       "L 429.604845 88.387741 \n",
       "L 429.932837 78.407543 \n",
       "L 430.260829 103.358038 \n",
       "L 430.588822 115.833286 \n",
       "L 430.916814 73.417444 \n",
       "L 431.244806 88.387741 \n",
       "L 431.572798 53.457048 \n",
       "L 431.90079 63.437246 \n",
       "L 432.228783 68.427345 \n",
       "L 432.884767 85.892692 \n",
       "L 433.212759 78.407543 \n",
       "L 433.540751 103.358038 \n",
       "L 433.868744 110.843187 \n",
       "L 434.196736 73.417444 \n",
       "L 434.524728 85.892692 \n",
       "L 434.85272 88.387741 \n",
       "L 435.180712 93.37784 \n",
       "L 435.508705 90.882791 \n",
       "L 435.836697 78.407543 \n",
       "L 436.164689 83.397642 \n",
       "L 436.492681 75.912494 \n",
       "L 436.820673 85.892692 \n",
       "L 437.476658 70.922395 \n",
       "L 437.80465 70.922395 \n",
       "L 438.460634 103.358038 \n",
       "L 438.788627 78.407543 \n",
       "L 439.116619 90.882791 \n",
       "L 439.444611 98.367939 \n",
       "L 439.772603 75.912494 \n",
       "L 440.100595 83.397642 \n",
       "L 440.428587 85.892692 \n",
       "L 440.75658 65.932296 \n",
       "L 441.084572 90.882791 \n",
       "L 441.412564 70.922395 \n",
       "L 441.740556 78.407543 \n",
       "L 442.068548 78.407543 \n",
       "L 442.396541 80.902593 \n",
       "L 442.724533 58.447147 \n",
       "L 443.052525 65.932296 \n",
       "L 443.380517 98.367939 \n",
       "L 444.036502 68.427345 \n",
       "L 444.364494 85.892692 \n",
       "L 444.692486 90.882791 \n",
       "L 445.020478 68.427345 \n",
       "L 445.34847 58.447147 \n",
       "L 445.676463 60.942197 \n",
       "L 446.004455 80.902593 \n",
       "L 446.332447 78.407543 \n",
       "L 446.660439 80.902593 \n",
       "L 446.988431 85.892692 \n",
       "L 447.316424 85.892692 \n",
       "L 447.644416 73.417444 \n",
       "L 447.972408 68.427345 \n",
       "L 448.3004 78.407543 \n",
       "L 448.628392 83.397642 \n",
       "L 448.956385 58.447147 \n",
       "L 449.284377 80.902593 \n",
       "L 449.612369 70.922395 \n",
       "L 450.268353 88.387741 \n",
       "L 450.596346 78.407543 \n",
       "L 450.924338 83.397642 \n",
       "L 451.25233 95.87289 \n",
       "L 451.580322 83.397642 \n",
       "L 451.908314 83.397642 \n",
       "L 452.236306 85.892692 \n",
       "L 452.564299 65.932296 \n",
       "L 452.892291 58.447147 \n",
       "L 453.220283 83.397642 \n",
       "L 453.548275 73.417444 \n",
       "L 453.876267 70.922395 \n",
       "L 454.20426 55.952098 \n",
       "L 454.860244 90.882791 \n",
       "L 455.188236 88.387741 \n",
       "L 455.516228 73.417444 \n",
       "L 455.844221 73.417444 \n",
       "L 456.172213 75.912494 \n",
       "L 456.500205 75.912494 \n",
       "L 456.828197 83.397642 \n",
       "L 457.156189 83.397642 \n",
       "L 457.484182 63.437246 \n",
       "L 457.812174 60.942197 \n",
       "L 458.468158 85.892692 \n",
       "L 458.79615 63.437246 \n",
       "L 459.124143 70.922395 \n",
       "L 459.452135 98.367939 \n",
       "L 459.780127 68.427345 \n",
       "L 460.108119 65.932296 \n",
       "L 460.436111 53.457048 \n",
       "L 460.764104 98.367939 \n",
       "L 461.092096 48.466949 \n",
       "L 461.420088 70.922395 \n",
       "L 461.74808 75.912494 \n",
       "L 462.076072 68.427345 \n",
       "L 462.404064 85.892692 \n",
       "L 462.732057 75.912494 \n",
       "L 463.060049 60.942197 \n",
       "L 463.388041 83.397642 \n",
       "L 463.716033 68.427345 \n",
       "L 464.044025 60.942197 \n",
       "L 464.372018 63.437246 \n",
       "L 464.70001 85.892692 \n",
       "L 465.355994 60.942197 \n",
       "L 465.683986 65.932296 \n",
       "L 466.011979 83.397642 \n",
       "L 466.339971 58.447147 \n",
       "L 466.667963 80.902593 \n",
       "L 466.995955 58.447147 \n",
       "L 467.323947 80.902593 \n",
       "L 467.65194 68.427345 \n",
       "L 468.307924 78.407543 \n",
       "L 468.635916 65.932296 \n",
       "L 468.963908 65.932296 \n",
       "L 469.291901 50.961999 \n",
       "L 469.619893 60.942197 \n",
       "L 469.947885 50.961999 \n",
       "L 470.275877 26.011504 \n",
       "L 470.931862 83.397642 \n",
       "L 471.259854 45.9719 \n",
       "L 471.587846 70.922395 \n",
       "L 471.915838 68.427345 \n",
       "L 472.24383 60.942197 \n",
       "L 472.571823 48.466949 \n",
       "L 473.227807 90.882791 \n",
       "L 473.555799 60.942197 \n",
       "L 473.883791 85.892692 \n",
       "L 474.211783 93.37784 \n",
       "L 474.539776 55.952098 \n",
       "L 474.867768 80.902593 \n",
       "L 475.19576 55.952098 \n",
       "L 475.523752 63.437246 \n",
       "L 475.851744 65.932296 \n",
       "L 476.507729 75.912494 \n",
       "L 476.835721 53.457048 \n",
       "L 477.163713 70.922395 \n",
       "L 477.491705 63.437246 \n",
       "L 477.819698 68.427345 \n",
       "L 478.14769 85.892692 \n",
       "L 478.475682 55.952098 \n",
       "L 478.803674 50.961999 \n",
       "L 479.459659 88.387741 \n",
       "L 479.787651 38.486751 \n",
       "L 480.115643 83.397642 \n",
       "L 480.443635 63.437246 \n",
       "L 480.771627 70.922395 \n",
       "L 481.09962 45.9719 \n",
       "L 481.427612 75.912494 \n",
       "L 481.755604 65.932296 \n",
       "L 482.083596 35.991702 \n",
       "L 482.411588 73.417444 \n",
       "L 482.739581 73.417444 \n",
       "L 483.067573 75.912494 \n",
       "L 483.395565 63.437246 \n",
       "L 483.723557 75.912494 \n",
       "L 484.051549 68.427345 \n",
       "L 484.379541 65.932296 \n",
       "L 484.707534 58.447147 \n",
       "L 485.035526 90.882791 \n",
       "L 485.363518 55.952098 \n",
       "L 485.69151 80.902593 \n",
       "L 486.019502 28.506553 \n",
       "L 486.347495 78.407543 \n",
       "L 486.675487 68.427345 \n",
       "L 487.003479 73.417444 \n",
       "L 487.331471 63.437246 \n",
       "L 487.659463 43.47685 \n",
       "L 487.987456 93.37784 \n",
       "L 488.315448 95.87289 \n",
       "L 488.64344 53.457048 \n",
       "L 488.971432 73.417444 \n",
       "L 489.299424 75.912494 \n",
       "L 489.627417 65.932296 \n",
       "L 489.955409 105.853088 \n",
       "L 490.283401 70.922395 \n",
       "L 490.611393 63.437246 \n",
       "L 490.939385 73.417444 \n",
       "L 491.267378 55.952098 \n",
       "L 491.59537 63.437246 \n",
       "L 491.923362 75.912494 \n",
       "L 492.251354 73.417444 \n",
       "L 492.579346 85.892692 \n",
       "L 492.907339 58.447147 \n",
       "L 493.563323 78.407543 \n",
       "L 493.891315 60.942197 \n",
       "L 494.219307 53.457048 \n",
       "L 494.875292 83.397642 \n",
       "L 495.203284 55.952098 \n",
       "L 495.531276 88.387741 \n",
       "L 495.859268 60.942197 \n",
       "L 496.18726 50.961999 \n",
       "L 496.843245 55.952098 \n",
       "L 497.171237 48.466949 \n",
       "L 497.499229 68.427345 \n",
       "L 497.827221 48.466949 \n",
       "L 498.155214 70.922395 \n",
       "L 498.483206 68.427345 \n",
       "L 498.811198 38.486751 \n",
       "L 499.13919 55.952098 \n",
       "L 499.467182 50.961999 \n",
       "L 499.795175 73.417444 \n",
       "L 500.123167 58.447147 \n",
       "L 500.451159 53.457048 \n",
       "L 501.107143 80.902593 \n",
       "L 501.435136 50.961999 \n",
       "L 501.763128 60.942197 \n",
       "L 502.419112 43.47685 \n",
       "L 502.747104 55.952098 \n",
       "L 503.075097 48.466949 \n",
       "L 503.403089 60.942197 \n",
       "L 503.731081 78.407543 \n",
       "L 504.059073 48.466949 \n",
       "L 504.387065 68.427345 \n",
       "L 504.715058 50.961999 \n",
       "L 505.04305 70.922395 \n",
       "L 505.699034 33.496652 \n",
       "L 506.027026 43.47685 \n",
       "L 506.355018 58.447147 \n",
       "L 506.683011 60.942197 \n",
       "L 507.011003 68.427345 \n",
       "L 507.338995 88.387741 \n",
       "L 507.666987 45.9719 \n",
       "L 507.994979 70.922395 \n",
       "L 508.322972 50.961999 \n",
       "L 508.650964 55.952098 \n",
       "L 508.978956 70.922395 \n",
       "L 509.306948 60.942197 \n",
       "L 509.63494 38.486751 \n",
       "L 510.290925 73.417444 \n",
       "L 510.618917 70.922395 \n",
       "L 510.946909 40.981801 \n",
       "L 511.274901 48.466949 \n",
       "L 511.602894 63.437246 \n",
       "L 511.930886 40.981801 \n",
       "L 512.258878 68.427345 \n",
       "L 512.58687 63.437246 \n",
       "L 512.914862 43.47685 \n",
       "L 513.570847 88.387741 \n",
       "L 513.898839 43.47685 \n",
       "L 514.226831 58.447147 \n",
       "L 514.554823 48.466949 \n",
       "L 514.882816 65.932296 \n",
       "L 515.5388 43.47685 \n",
       "L 515.866792 60.942197 \n",
       "L 516.194784 85.892692 \n",
       "L 516.522777 38.486751 \n",
       "L 516.850769 65.932296 \n",
       "L 517.178761 50.961999 \n",
       "L 517.506753 50.961999 \n",
       "L 517.834745 38.486751 \n",
       "L 518.162737 63.437246 \n",
       "L 518.49073 65.932296 \n",
       "L 518.818722 65.932296 \n",
       "L 519.146714 58.447147 \n",
       "L 519.474706 73.417444 \n",
       "L 519.802698 33.496652 \n",
       "L 520.130691 68.427345 \n",
       "L 520.458683 60.942197 \n",
       "L 520.786675 48.466949 \n",
       "L 521.114667 75.912494 \n",
       "L 521.442659 40.981801 \n",
       "L 521.770652 45.9719 \n",
       "L 522.098644 65.932296 \n",
       "L 522.426636 68.427345 \n",
       "L 522.754628 43.47685 \n",
       "L 523.08262 40.981801 \n",
       "L 523.410613 65.932296 \n",
       "L 523.738605 70.922395 \n",
       "L 524.066597 80.902593 \n",
       "L 524.394589 53.457048 \n",
       "L 524.722581 40.981801 \n",
       "L 525.050574 68.427345 \n",
       "L 525.378566 40.981801 \n",
       "L 525.706558 60.942197 \n",
       "L 526.03455 55.952098 \n",
       "L 526.362542 65.932296 \n",
       "L 526.690535 53.457048 \n",
       "L 527.018527 45.9719 \n",
       "L 527.346519 50.961999 \n",
       "L 527.674511 48.466949 \n",
       "L 528.002503 50.961999 \n",
       "L 528.330495 68.427345 \n",
       "L 528.658488 31.001603 \n",
       "L 529.314472 60.942197 \n",
       "L 529.642464 50.961999 \n",
       "L 529.970456 58.447147 \n",
       "L 530.298449 48.466949 \n",
       "L 530.626441 55.952098 \n",
       "L 530.954433 68.427345 \n",
       "L 531.282425 53.457048 \n",
       "L 531.93841 70.922395 \n",
       "L 532.266402 35.991702 \n",
       "L 532.594394 63.437246 \n",
       "L 532.922386 55.952098 \n",
       "L 533.250378 58.447147 \n",
       "L 533.578371 45.9719 \n",
       "L 533.906363 68.427345 \n",
       "L 534.234355 50.961999 \n",
       "L 534.562347 26.011504 \n",
       "L 534.890339 43.47685 \n",
       "L 535.218332 85.892692 \n",
       "L 535.546324 63.437246 \n",
       "L 535.874316 55.952098 \n",
       "L 536.202308 53.457048 \n",
       "L 536.5303 35.991702 \n",
       "L 536.858293 55.952098 \n",
       "L 537.186285 40.981801 \n",
       "L 537.514277 70.922395 \n",
       "L 537.842269 70.922395 \n",
       "L 538.170261 40.981801 \n",
       "L 538.498254 60.942197 \n",
       "L 538.826246 65.932296 \n",
       "L 539.48223 48.466949 \n",
       "L 539.810222 63.437246 \n",
       "L 540.138214 48.466949 \n",
       "L 540.466207 60.942197 \n",
       "L 540.794199 58.447147 \n",
       "L 541.122191 48.466949 \n",
       "L 541.450183 43.47685 \n",
       "L 541.778175 23.516454 \n",
       "L 542.106168 45.9719 \n",
       "L 542.43416 50.961999 \n",
       "L 542.762152 63.437246 \n",
       "L 543.090144 35.991702 \n",
       "L 543.418136 50.961999 \n",
       "L 543.746129 23.516454 \n",
       "L 544.074121 43.47685 \n",
       "L 544.402113 40.981801 \n",
       "L 544.730105 63.437246 \n",
       "L 545.058097 63.437246 \n",
       "L 545.38609 43.47685 \n",
       "L 545.714082 80.902593 \n",
       "L 546.042074 53.457048 \n",
       "L 546.370066 48.466949 \n",
       "L 546.698058 68.427345 \n",
       "L 547.026051 68.427345 \n",
       "L 548.010027 48.466949 \n",
       "L 548.338019 45.9719 \n",
       "L 548.666012 33.496652 \n",
       "L 548.994004 45.9719 \n",
       "L 549.321996 53.457048 \n",
       "L 549.649988 40.981801 \n",
       "L 549.97798 53.457048 \n",
       "L 550.305972 35.991702 \n",
       "L 550.633965 58.447147 \n",
       "L 550.961957 48.466949 \n",
       "L 551.289949 63.437246 \n",
       "L 551.945933 31.001603 \n",
       "L 552.273926 43.47685 \n",
       "L 552.601918 65.932296 \n",
       "L 552.92991 43.47685 \n",
       "L 553.257902 50.961999 \n",
       "L 553.585894 63.437246 \n",
       "L 553.913887 45.9719 \n",
       "L 554.241879 58.447147 \n",
       "L 555.225855 31.001603 \n",
       "L 555.553848 58.447147 \n",
       "L 555.88184 45.9719 \n",
       "L 556.209832 50.961999 \n",
       "L 556.537824 50.961999 \n",
       "L 556.865816 43.47685 \n",
       "L 557.193809 53.457048 \n",
       "L 557.521801 40.981801 \n",
       "L 557.849793 53.457048 \n",
       "L 558.177785 35.991702 \n",
       "L 558.505777 55.952098 \n",
       "L 558.83377 40.981801 \n",
       "L 559.161762 50.961999 \n",
       "L 559.489754 75.912494 \n",
       "L 559.817746 33.496652 \n",
       "L 560.145738 60.942197 \n",
       "L 560.47373 53.457048 \n",
       "L 560.801723 38.486751 \n",
       "L 561.129715 60.942197 \n",
       "L 561.457707 40.981801 \n",
       "L 561.785699 55.952098 \n",
       "L 562.113691 45.9719 \n",
       "L 562.441684 48.466949 \n",
       "L 562.769676 31.001603 \n",
       "L 563.42566 48.466949 \n",
       "L 563.753652 73.417444 \n",
       "L 564.081645 55.952098 \n",
       "L 564.409637 50.961999 \n",
       "L 564.737629 50.961999 \n",
       "L 565.065621 48.466949 \n",
       "L 565.393613 48.466949 \n",
       "L 565.721606 68.427345 \n",
       "L 566.049598 68.427345 \n",
       "L 566.37759 43.47685 \n",
       "L 566.705582 83.397642 \n",
       "L 567.033574 55.952098 \n",
       "L 567.033574 55.952098 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"line2d_66\">\n",
       "    <path d=\"M 336.455062 261.30066 \n",
       "L 348.000387 144.220961 \n",
       "L 359.545712 126.400319 \n",
       "L 371.091038 112.028834 \n",
       "L 382.636363 102.575591 \n",
       "L 394.181688 95.805024 \n",
       "L 405.727013 83.221991 \n",
       "L 417.272339 78.814735 \n",
       "L 428.817664 72.491282 \n",
       "L 440.362989 71.213816 \n",
       "L 451.908314 64.379377 \n",
       "L 463.45364 60.483108 \n",
       "L 474.998965 57.672684 \n",
       "L 486.54429 53.584795 \n",
       "L 498.089615 59.844375 \n",
       "L 509.63494 51.796343 \n",
       "L 521.180266 52.179583 \n",
       "L 532.725591 49.560779 \n",
       "L 544.270916 44.770284 \n",
       "L 555.816241 42.981832 \n",
       "\" clip-path=\"url(#pd2853d5644)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_9\">\n",
       "    <path d=\"M 324.926136 288.116454 \n",
       "L 324.926136 10.916454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_10\">\n",
       "    <path d=\"M 578.5625 288.116454 \n",
       "L 578.5625 10.916454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_11\">\n",
       "    <path d=\"M 324.926136 288.116454 \n",
       "L 578.5625 288.116454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_12\">\n",
       "    <path d=\"M 324.926136 10.916454 \n",
       "L 578.5625 10.916454 \n",
       "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n",
       "   </g>\n",
       "   <g id=\"legend_2\">\n",
       "    <g id=\"patch_13\">\n",
       "     <path d=\"M 331.926136 48.828954 \n",
       "L 409.326136 48.828954 \n",
       "Q 411.326136 48.828954 411.326136 46.828954 \n",
       "L 411.326136 17.916454 \n",
       "Q 411.326136 15.916454 409.326136 15.916454 \n",
       "L 331.926136 15.916454 \n",
       "Q 329.926136 15.916454 329.926136 17.916454 \n",
       "L 329.926136 46.828954 \n",
       "Q 329.926136 48.828954 331.926136 48.828954 \n",
       "z\n",
       "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n",
       "    </g>\n",
       "    <g id=\"line2d_67\">\n",
       "     <path d=\"M 333.926136 24.014892 \n",
       "L 343.926136 24.014892 \n",
       "L 353.926136 24.014892 \n",
       "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_35\">\n",
       "     <!-- train_acc -->\n",
       "     <g transform=\"translate(361.926136 27.514892) scale(0.1 -0.1)\">\n",
       "      <defs>\n",
       "       <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \n",
       "L 3122 2828 \n",
       "Q 2878 2963 2633 3030 \n",
       "Q 2388 3097 2138 3097 \n",
       "Q 1578 3097 1268 2742 \n",
       "Q 959 2388 959 1747 \n",
       "Q 959 1106 1268 751 \n",
       "Q 1578 397 2138 397 \n",
       "Q 2388 397 2633 464 \n",
       "Q 2878 531 3122 666 \n",
       "L 3122 134 \n",
       "Q 2881 22 2623 -34 \n",
       "Q 2366 -91 2075 -91 \n",
       "Q 1284 -91 818 406 \n",
       "Q 353 903 353 1747 \n",
       "Q 353 2603 823 3093 \n",
       "Q 1294 3584 2113 3584 \n",
       "Q 2378 3584 2631 3529 \n",
       "Q 2884 3475 3122 3366 \n",
       "z\n",
       "\" transform=\"scale(0.015625)\"/>\n",
       "      </defs>\n",
       "      <use xlink:href=\"#DejaVuSans-74\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"80.322266\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-69\" x=\"141.601562\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6e\" x=\"169.384766\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"232.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"282.763672\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"344.042969\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"399.023438\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"line2d_68\">\n",
       "     <path d=\"M 333.926136 38.971142 \n",
       "L 343.926136 38.971142 \n",
       "L 353.926136 38.971142 \n",
       "\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n",
       "    </g>\n",
       "    <g id=\"text_36\">\n",
       "     <!-- val_acc -->\n",
       "     <g transform=\"translate(361.926136 42.471142) scale(0.1 -0.1)\">\n",
       "      <use xlink:href=\"#DejaVuSans-76\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"59.179688\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-6c\" x=\"120.458984\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-5f\" x=\"148.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-61\" x=\"198.242188\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"259.521484\"/>\n",
       "      <use xlink:href=\"#DejaVuSans-63\" x=\"314.501953\"/>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"p477d2a8414\">\n",
       "   <rect x=\"20.5625\" y=\"10.916454\" width=\"253.636364\" height=\"277.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pd2853d5644\">\n",
       "   <rect x=\"324.926136\" y=\"10.916454\" width=\"253.636364\" height=\"277.2\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=500):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    # plot\n",
    "    fig_num = len(train_df.columns)\n",
    "    fig, axs = plt.subplots(1, fig_num, figsize=(5 * fig_num, 5))\n",
    "    for idx, item in enumerate(train_df.columns):    \n",
    "        axs[idx].plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        axs[idx].plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        axs[idx].grid()\n",
    "        axs[idx].legend()\n",
    "        # axs[idx].set_xticks(range(0, train_df.index[-1], 5000))\n",
    "        # axs[idx].set_xticklabels(map(lambda x: f\"{int(x/1000)}k\", range(0, train_df.index[-1], 5000)))\n",
    "        axs[idx].set_xlabel(\"step\")\n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "plot_learning_curves(record, sample_step=10)  #横坐标是 steps"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.6319\n",
      "accuracy: 0.7828\n"
     ]
    }
   ],
   "source": [
    "# dataload for evaluating\n",
    "\n",
    "# load checkpoints\n",
    "model.load_state_dict(torch.load(f\"checkpoints/{exp_name}/best.ckpt\", map_location=\"cpu\"))\n",
    "\n",
    "model.eval()\n",
    "loss, acc = evaluating(model, eval_dl, loss_fct)\n",
    "print(f\"loss:     {loss:.4f}\\naccuracy: {acc:.4f}\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 推理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# test_df\n",
    "test_ds = Cifar10Dataset(\"test\", transform=transforms_eval)\n",
    "test_dl = DataLoader(test_ds, batch_size=batch_size, shuffle=False, drop_last=False)\n",
    "\n",
    "preds_collect = []\n",
    "model.eval()\n",
    "for data, fake_label in tqdm(test_dl):\n",
    "    data = data.to(device=device)\n",
    "    logits = model(data)\n",
    "    preds = [test_ds.idx_to_label[idx] for idx in logits.argmax(axis=-1).cpu().tolist()]\n",
    "    preds_collect.extend(preds)\n",
    "    \n",
    "test_df[\"class\"] = preds_collect\n",
    "test_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导出 submission.csv\n",
    "test_df.to_csv(\"submission.csv\", index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.8"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
